<!DOCTYPE html><html>
<head>
  <meta charset="UTF-8">
  <title>Analysis Server API Specification</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Roboto+Mono:wght@300;400;700&family=Roboto:ital,wght@0,300;0,400;0,700;1,400&display=swap" type="text/css"><style>body {
  font-family: 'Roboto', sans-serif;
  max-width: 800px;
  margin: 0 auto;
  padding: 0 16px;
  font-size: 16px;
  line-height: 1.5;
  color: #111;
  background-color: #fdfdfd;
  font-weight: 300;
  -webkit-font-smoothing: auto;
}

h2, h3, h4, h5 {
  margin-bottom: 0;
}

h2.domain {
  border-bottom: 1px solid rgb(200, 200, 200);
  margin-bottom: 0.5em;
}

h4 {
  font-size: 18px;
}

h5 {
  font-size: 16px;
}

p {
  margin-top: 0;
}

pre {
  margin: 0;
  font-family: 'Roboto Mono', monospace;
  font-size: 15px;
}

div.box {
  background-color: rgb(240, 245, 240);
  border-radius: 4px;
  padding: 4px 12px;
  margin: 16px 0;
}

div.hangingIndent {
  padding-left: 3em;
  text-indent: -3em;
}

dl dt {
  font-weight: bold;
}

dl dd {
  margin-left: 16px;
}

dt {
  margin-top: 1em;
}

dt.notification {
  font-weight: bold;
}

dt.refactoring {
  font-weight: bold;
}

dt.request {
  font-weight: bold;
}

dt.typeDefinition {
  font-weight: bold;
}

a {
  text-decoration: none;
}

a:focus, a:hover {
  text-decoration: underline;
}

.deprecated {
  text-decoration: line-through;
}

/* Styles for index */

.subindex ul {
  padding-left: 0;
  margin-left: 0;

  -webkit-margin-before: 0;
  -webkit-margin-start: 0;
  -webkit-padding-start: 0;

  list-style-type: none;
}
</style></head>
<body>
<h1>Analysis Server API Specification</h1>
<h1 style="color:#999999">Version
  1.39.0
</h1>
<p>
  This document contains a specification of the API provided by the
  analysis server. The API in this document is currently under
  development. Changes to the API will be accompanied by an update to the
  protocol version number according to the principles of semantic
  versioning (<a href="https://semver.org/">semver.org</a>).
</p>
<h2>Overview</h2>
<p>
  The analysis server API is a bi-directional client-server
  API. The API is independent of the transport mechanism used, but
  is heavily influenced by a model in which sockets or character
  streams are used to transport JSON-RPC encoded information.
</p>
<h3>Transport Mechanism</h3>
<p>
  The characters passed to the server are expected to be encoded
  using UTF-8.
</p>
<p>
  When character streams are used as the transport, messages are
  delineated by newlines. This means, in particular, that the JSON
  encoding process must not introduce newlines within a
  message. Note however that newlines are used in this document
  for readability.
</p>
<p>
  It is the client's responsibility to read output from the server to
  avoid its blocking.
</p>
<p>
  To ease interoperability with Lisp-based clients (which may not
  be able to easily distinguish between empty lists, empty maps,
  and null), client-to-server communication is allowed to replace
  any instance of "<tt>{}</tt>" or "<tt>[]</tt>" with null. The
  server will always properly represent empty lists as
  "<tt>[]</tt>" and empty maps as "<tt>{}</tt>".
</p>
<h3>Communication Structure</h3>
<p>
  Clients can make a request of the server and the server will
  provide a response for each request that it receives. While many
  of the requests that can be made by a client are informational
  in nature, we have chosen to always return a response so that
  clients can know whether the request was received and was
  correct.
</p>
<p>
  There is no guarantee concerning the order in which responses
  will be returned, but there is a guarantee that the server will
  process requests in the order in which they are sent as long as
  the transport mechanism also makes this guarantee. Responses can
  be returned in an order that is different from the order in
  which the requests were received because some requests take
  longer to process than others.
</p>
<p>
  Every request is required to have two fields and may have two
  additional optional fields. The first required field is the 'id'
  field, which is only used by the server to associate a response
  with the request that generated the response. The second
  required field is the 'method' field, which is used to determine
  what the server is being requested to do. One optional field is
  the 'params' field, whose structure is dependent on the method
  being requested. The structure of this field is described with
  each request for which it is required. The other optional field
  is the 'clientRequestTime' field, which is a number indicating
  the time at which the client made the request (milliseconds
  since epoch). Providing clientRequestTime helps us track
  how responsive analysis server is to client requests
  and better address any issues that occur.
</p>
<p>
  Every response has up to three fields. The first field is the
  'id' field, which is always present and whose value is the
  identifier that was passed to the request that generated the
  response. The second field is the 'error' field, which is only
  present if an error was encountered while processing the
  request. The third field is the 'result' field, whose structure
  is dependent on the method being responded to, and is described
  with each request that will produce it.
</p>
<p>
  The server can communicate to the clients by sending a
  notification. The purpose of these notifications is to provide
  information to clients as it becomes available rather than to
  require that clients poll for it. Unless explicitly stated, all
  notifications are designed to return the complete information
  available at the time the notification is sent; clients are not
  required to update previously communicated
  results. Consequently, the server can and should return partial
  results before all results are available. For example, the
  syntactic errors for a file can be returned as soon as the
  syntactic analysis is complete, and both syntactic and semantic
  errors can be returned together at a later time.
</p>
<p>
  Each notification has two fields. The first field is the 'event'
  field, which identifies the kind of notification. The second
  field is the 'params' field, whose structure is dependent on the
  kind of notification being sent. The structure of this field is
  described with each notification.
</p>
<p>
  The server can also communicate to the clients by sending a request. As with
  requests sent from the client, requests from the server have both an 'id' and
  a 'method' field, and an optional 'params' field. The ids used by the server
  are independent of the ids used by the client. In other words, the ids sent by
  the server might be equal to ids already sent from the client, but are
  unrelated to the client request with that same id.
</p>
<p>
  In order to be backward compatible, clients should ignore fields that were
  not specified in the version of the API on which they were based. Clients
  should also use the server.getVersion request to test that the version of
  the server supports an API before using it.
</p>
<h3>Eventual Consistency</h3>
<p>
  The analysis server satisfies requests under the principle of
  <a href="https://en.wikipedia.org/wiki/Eventual_consistency">eventual
    consistency</a>.
  That is, in some cases it may return responses with the currently available
  results while it's catching up with unprocessed changes.
</p>
<h3>Enumerations</h3>
<p>
  Responses from the server may include enumerations indicating the kind of a
  specific item. The enums may be extended with new values in future versions of
  the server so clients should ensure unknown values are handled gracefully, either
  ignoring the item or treating it with some default/fallback handling.
</p>
<h3>Changelog</h3>
<h4>1.39.0</h4>
<ul>
  <li>Added a new <tt>lspCapabilities</tt> field to the <tt>setClientCapabilities</tt> parameters to allow clients to provide their LSP capabilities. These capabilities can indicate that a client can support <tt>lsp.handle</tt> requests in the server-to-client direction.</li>
</ul>
<h4>1.38.0</h4>
<ul>
  <li>Deprecated the <tt>analytics.enable</tt> request.</li>
  <li>Deprecated the <tt>analytics.isEnabled</tt> request.</li>
</ul>
<h4>1.37.0</h4>
<ul>
  <li><tt>SourceEdit</tt> now has an optional human-readable <tt>description</tt> that
  may contain a description of a change.</li>
</ul>
<h4>1.36.0</h4>
<ul>
  <li>
    Added a new <tt>supportsUris</tt> client capability to indicate that <tt>FilePath</tt>s should be URIs instead of file paths.
  </li>
  <li>
    Added an experimental "lsp.handle" request to allow sending LSP requests through the protocol.
  </li>
  <li>
    Added an experimental "lsp.notification" notification to allow receiving LSP notifications.
  </li>
</ul>
<h4>1.35.0</h4>
<ul>
  <li>
    Removed the requests <tt>completion.getSuggestions</tt>,
    <tt>completion.setSubscriptions</tt>, and
    <tt>completion.getSuggestionDetails</tt>. These requests are no longer
    supported and the server will return an error if they are invoked. The
    associated object structures and notifications have also been removed.
  </li>
</ul>
<h4>1.34.0</h4>
<ul>
  <li>
    Added the ability for the server to send requests to the client when the
    client uses <tt>setClientCapabilities</tt> to enable the requests. Also
    added the <tt>openUrlRequest</tt> and <tt>showMessageRequest</tt> requests.
  </li>
</ul>
<h4>1.33.1</h4>
<ul>
  <li><tt>SourceChange</tt> now has an optional <tt>selectionLength</tt> that may be
  provided when <tt>selection</tt> is.</li>
</ul>
<h4>1.33.0</h4>
<ul>
  <li>Requests <tt>getSuggestions2</tt> and <tt>getSuggestionDetails2</tt>
    are enabled.</li>
</ul>
<h4>1.32.10</h4>
<ul>
  <li>The <tt>MOVE_FILE</tt> refactor now supports moving/renaming folders.</li>
</ul>
<h4>1.32.8</h4>
<ul>
  <li>Added <tt>server.cancelRequest</tt> to allow clients to request cancellation
  of outstanding requests.</li>
</ul>
<h4>1.32.7</h4>
<ul>
  <li><tt>HoverInformation.elementDescription</tt> may now include linebreaks to
  improve formatting of functions and methods with many parameters. This is not
  an API change but may be useful as a signal for clients that previously did their
  own formatting.</li>
</ul>
<h4>1.32.6</h4>
<ul>
  <li>Added <tt>FoldingKind.PARAMETERS</tt> for folding regions for parameters
  that span multiple lines.</li>
</ul>
<h4>1.32.5</h4>
<ul>
  <li>Added optional <tt>replacementOffset</tt> and <tt>replacementLength</tt> on
  <tt>CompletionSuggestion</tt> to support different per-completion text replacement
  ranges (for example when inserting names for arguments, a different range may be
  supplied than for completions that are not name labels).</li>
</ul>
<h4>1.32.4</h4>
<ul>
  <li>Added <tt>ElementKind.TYPE_ALIAS</tt> and <tt>HighlightRegionType.TYPE_ALIAS</tt>
    for non-function type aliases.</li>
</ul>
<h4>1.32.3</h4>
<ul>
  <li>Removed the experimental <tt>completion.listTokenDetails</tt> request and
    the associated data types.</li>
</ul>
<h4>1.32.2</h4>
<ul>
  <li>Added <tt>FoldingKind.COMMENT</tt> for folding regions for blocks of
    comments.</li>
</ul>
<h4>1.32.1</h4>
<ul>
  <li>Added <tt>CompletionSuggestionKind.PACKAGE_NAME</tt> for Pub package name
    completions in <tt>pubspec.yaml</tt>.</li>
</ul>
<h3>Domains</h3>
<p>
  For convenience, the API is divided into domains. Each domain is specified
  in a separate section below. The specifications of the API's refer to data
  structures beyond the standard JSON primitives. These data structures are
  documented in the section titled <a href="#types">Types</a>.
</p>

<p><a href="#domain_server">Server</a></p><ul><li><a href="#request_server.getVersion">server.getVersion</a></li>
<li><a href="#request_server.shutdown">server.shutdown</a></li>
<li><a href="#request_server.setSubscriptions">server.setSubscriptions</a></li>
<li><a href="#request_server.cancelRequest">server.cancelRequest</a></li>
<li><a href="#request_server.setClientCapabilities">server.setClientCapabilities</a></li>
<li><a href="#request_server.openUrlRequest">server.openUrlRequest</a></li>
<li><a href="#request_server.showMessageRequest">server.showMessageRequest</a></li>
</ul>

<p><a href="#domain_analysis">Analysis</a></p><ul><li><a href="#request_analysis.getErrors">analysis.getErrors</a></li>
<li><a href="#request_analysis.getHover">analysis.getHover</a></li>
<li><a href="#request_analysis.getLibraryDependencies">analysis.getLibraryDependencies</a></li>
<li><a href="#request_analysis.getNavigation">analysis.getNavigation</a></li>
<li><a class="deprecated" href="#request_analysis.getReachableSources">analysis.getReachableSources</a></li>
<li><a href="#request_analysis.reanalyze">analysis.reanalyze</a></li>
<li><a href="#request_analysis.setAnalysisRoots">analysis.setAnalysisRoots</a></li>
<li><a href="#request_analysis.setGeneralSubscriptions">analysis.setGeneralSubscriptions</a></li>
<li><a href="#request_analysis.setPriorityFiles">analysis.setPriorityFiles</a></li>
<li><a href="#request_analysis.setSubscriptions">analysis.setSubscriptions</a></li>
<li><a href="#request_analysis.updateContent">analysis.updateContent</a></li>
<li><a class="deprecated" href="#request_analysis.updateOptions">analysis.updateOptions</a></li>
</ul>

<p><a href="#domain_completion">Completion</a></p><ul><li><a href="#request_completion.getSuggestions2">completion.getSuggestions2</a></li>
<li><a class="deprecated" href="#request_completion.registerLibraryPaths">completion.registerLibraryPaths</a></li>
<li><a href="#request_completion.getSuggestionDetails2">completion.getSuggestionDetails2</a></li>
</ul>

<p><a href="#domain_search">Search</a></p><ul><li><a href="#request_search.findElementReferences">search.findElementReferences</a></li>
<li><a href="#request_search.findMemberDeclarations">search.findMemberDeclarations</a></li>
<li><a href="#request_search.findMemberReferences">search.findMemberReferences</a></li>
<li><a href="#request_search.findTopLevelDeclarations">search.findTopLevelDeclarations</a></li>
<li><a href="#request_search.getTypeHierarchy">search.getTypeHierarchy</a></li>
</ul>

<p><a href="#domain_edit">Edit</a></p><ul><li><a href="#request_edit.format">edit.format</a></li>
<li><a href="#request_edit.getAssists">edit.getAssists</a></li>
<li><a href="#request_edit.getAvailableRefactorings">edit.getAvailableRefactorings</a></li>
<li><a href="#request_edit.getFixes">edit.getFixes</a></li>
<li><a href="#request_edit.getPostfixCompletion">edit.getPostfixCompletion</a></li>
<li><a href="#request_edit.getRefactoring">edit.getRefactoring</a></li>
<li><a href="#request_edit.sortMembers">edit.sortMembers</a></li>
<li><a href="#request_edit.organizeDirectives">edit.organizeDirectives</a></li>
</ul>

<p><a href="#domain_execution">Execution</a></p><ul><li><a href="#request_execution.createContext">execution.createContext</a></li>
<li><a href="#request_execution.deleteContext">execution.deleteContext</a></li>
<li><a href="#request_execution.getSuggestions">execution.getSuggestions</a></li>
<li><a href="#request_execution.mapUri">execution.mapUri</a></li>
<li><a class="deprecated" href="#request_execution.setSubscriptions">execution.setSubscriptions</a></li>
</ul>

<p><a href="#domain_diagnostic">Diagnostic</a></p><ul><li><a href="#request_diagnostic.getDiagnostics">diagnostic.getDiagnostics</a></li>
<li><a href="#request_diagnostic.getServerPort">diagnostic.getServerPort</a></li>
</ul>

<p><a href="#domain_flutter">Flutter</a></p><ul><li><a href="#request_flutter.setSubscriptions">flutter.setSubscriptions</a></li>
</ul>

<h3>Command-line Arguments</h3>
<p>
  The command-line arguments that can be passed to the server.
</p>
<h4>Options</h4>
<blockquote>
  <dl>
    <dt>--client-id</dt>
    <dd>
      <p>
        Specifies an identifier associated with the client. Used when
        generating error reports.
      </p>
      <p>
        Clients are strongly encouraged to provide this information in
        order to improve the quality of information that can be provided
        to them.
      </p>
    </dd>
  </dl>
  <dl>
    <dt>--client-version</dt>
    <dd>
      <p>
        Specifies the version of the client that is communicating with
        the server. Used when generating error reports.
      </p>
      <p>
        Clients are strongly encouraged to provide this information in
        order to improve the quality of information that can be provided
        to them.
      </p>
    </dd>
  </dl>
  <dl>
    <dt class="deprecated">--no-error-notification</dt>
    <dd>
      <p><b>Deprecated:</b> clients should no longer pass this option in</p>
      Disable notifications about errors (see analysis.error). If this
      flag is not specified then notifications will be sent for all
      errors produced for all files in the actual analysis roots.
    </dd>
  </dl>
  <dl>
    <dt class="deprecated">--no-index</dt>
    <dd>
      <p><b>Deprecated:</b> clients should no longer pass this option in</p>
      This flag used to disable the server from generating an index, but now
      it has no effect.
    </dd>
  </dl>
  <dl>
    <dt class="deprecated">--file-read-mode</dt>
    <dd>
      <p><b>Deprecated:</b> clients should no longer pass this option in</p>
      An enumeration of the ways files can be read from disk. Some clients
      normalize end of line characters which would make the file offset and
      range information incorrect. The default option is <tt>as-is</tt>, but
      can also be set to <tt>normalize-eol-always</tt>. The default option
      (<tt>as-is</tt>) reads files as they are on disk. The
      <tt>normalize-eol-always</tt> option does the following:
      <ul>
        <li>'\r\n' is converted to '\n';</li>
        <li>'\r' by itself is converted to '\n';</li>
        <li>this happens regardless of the OS editor is running on.</li>
      </ul>
    </dd>
  </dl>
</blockquote>
<h1>Domains</h1>
<h2 class="domain"><a name="domain_server">server domain</a></h2>
  <p>
    The server domain contains API's related to the execution of
    the server.
  </p>
  
  
  
  
  
  
  
  
  
  
  
  
<h3>Requests</h3><dl><dt class="request"><a name="request_server.getVersion">server.getVersion</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "server.getVersion"
}</pre><br><pre>response: {
  "id": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
  "result": {
    "<b>version</b>": String
  }
}</pre></div>
    <p>Return the version number of the analysis server.</p>
    
  <h4>returns:</h4><dl><dt class="field"><b>version: String</b></dt><dd>
        
        <p>The version number of the analysis server.</p>
      </dd></dl></dd><dt class="request"><a name="request_server.shutdown">server.shutdown</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "server.shutdown"
}</pre><br><pre>response: {
  "id": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
}</pre></div>
    <p>
      Cleanly shutdown the analysis server. Requests that are
      received after this request will not be processed. Requests
      that were received before this request, but for which a
      response has not yet been sent, will not be responded to. No
      further responses or notifications will be sent after the
      response to this request has been sent.
    </p>
  </dd><dt class="request"><a name="request_server.setSubscriptions">server.setSubscriptions</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "server.setSubscriptions"
  "params": {
    "<b>subscriptions</b>": List&lt;<a href="#type_ServerService">ServerService</a>&gt;
  }
}</pre><br><pre>response: {
  "id": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
}</pre></div>
    <p>
      Subscribe for services. All previous subscriptions are
      replaced by the given set of services.
    </p>
    <p>
      It is an error if any of the elements in the list are not
      valid services. If there is an error, then the current
      subscriptions will remain unchanged.
    </p>
    
  <h4>parameters:</h4><dl><dt class="field"><b>subscriptions: List&lt;<a href="#type_ServerService">ServerService</a>&gt;</b></dt><dd>
        
        <p>A list of the services being subscribed to.</p>
      </dd></dl></dd><dt class="request"><a name="request_server.cancelRequest">server.cancelRequest</a></dt><dd><div class="box"><pre>request: {
  "<b>id</b>": String
  "method": "server.cancelRequest"
  "params": {
    "<b>id</b>": String
  }
}</pre><br><pre>response: {
  "id": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
}</pre></div>
    <p>Requests cancellation of a request sent by the client by id.
      This is provided on a best-effort basis and there is no
      guarantee the server will be able to cancel any specific
      request.

      The server will still always produce a response to the request
      even in the case of cancellation, but clients should discard
      any results of any cancelled request because they may be
      incomplete or inaccurate.

      This request always completes without error regardless of
      whether the request is successfully cancelled.</p>
    
  <h4>parameters:</h4><dl><dt class="field"><b>id: String</b></dt><dd>
        
        <p>The id of the request that should be cancelled.</p>
      </dd></dl></dd><dt class="request"><a name="request_server.setClientCapabilities">server.setClientCapabilities</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "server.setClientCapabilities"
  "params": {
    "<b>requests</b>": List&lt;String&gt;
    "<b>supportsUris</b>": <span style="color:#999999">optional</span> bool
    "<b>lspCapabilities</b>": <span style="color:#999999">optional</span> object
  }
}</pre><br><pre>response: {
  "id": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
}</pre></div>
    <p>
      Record the capabilities supported by the client. The default values,
      documented below, will be assumed until this request is received.
    </p>
    
  <h4>parameters:</h4><dl><dt class="field"><b>requests: List&lt;String&gt;</b></dt><dd>
        
        <p>
          The names of the requests that the server can safely send to the
          client. Only requests whose name is in the list will be sent.
        </p>
        <p>
          A request should only be included in the list if the client will
          unconditionally honor the request.
        </p>
        <p>
          The default, used before this request is received, is an empty list.
        </p>
        <p>
          The following is a list of the names of the requests that can be
          specified:
        </p>
        <ul>
          <li>
            <tt>openUrlRequest</tt>
          </li>
          <li>
            <tt>showMessageRequest</tt>
          </li>
        </ul>
      </dd><dt class="field"><b>supportsUris: bool<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          True if the client supports the server sending URIs in place of file paths.
        </p>
        <p>
          In this mode, the server will use URIs in all protocol fields with the type <tt>FilePath</tt>. Returned URIs may be `file://` URIs or custom schemes. The client can fetch the file contents for URIs with custom schemes (and receive modification events) through the LSP protocol (see the "lsp" domain).
        </p>
        <p>
          LSP notifications are automatically enabled when the client sets this capability.
        </p>
      </dd><dt class="field"><b>lspCapabilities: object<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          LSP capabilities of the client as defined by the Language Server Protocol specification.
        </p>
        <p>
          If custom LSP capabilities are to be used, the setClientCapabilities request should be called before any LSP requests are made to the server.
        </p>
        <p>
          If LSP capabilities are not provided or no setClientCapabilities request is made, a very basic set of capabilities will be assumed.
        </p>
      </dd></dl></dd><dt class="request"><a name="request_server.openUrlRequest">server.openUrlRequest</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "server.openUrlRequest"
  "params": {
    "<b>url</b>": String
  }
}</pre><br><pre>response: {
  "id": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
}</pre></div>
    <p><b>Note:</b> This is a request from the server to the client.</p>
    <p>
      Request that a URL be opened.
    </p>
    <p>
      The client is expected to open the URL, either within the client's UI or
      in the default browser.
    </p>
    <p>
      The request will only be sent from the server to the client if the client
      has indicated that it supports this request by using the
      <tt>setClientCapabilities</tt> request.
    </p>
    
  <h4>parameters:</h4><dl><dt class="field"><b>url: String</b></dt><dd>
        
        <p>
          The URL to be opened.
        </p>
      </dd></dl></dd><dt class="request"><a name="request_server.showMessageRequest">server.showMessageRequest</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "server.showMessageRequest"
  "params": {
    "<b>type</b>": <a href="#type_MessageType">MessageType</a>
    "<b>message</b>": String
    "<b>actions</b>": List&lt;<a href="#type_MessageAction">MessageAction</a>&gt;
  }
}</pre><br><pre>response: {
  "id": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
  "result": {
    "<b>action</b>": <span style="color:#999999">optional</span> String
  }
}</pre></div>
    <p><b>Note:</b> This is a request from the server to the client.</p>
    <p>
      Request that a message be displayed to the user.
    </p>
    <p>
      The client is expected to display the message to the user with one or more
      buttons with the specified labels, and to return a response consisting of
      the label of the button that was clicked.
    </p>
    <p>
      The request will only be sent from the server to the client if the client
      has indicated that it supports this request by using the
      <tt>setClientCapabilities</tt> request.
    </p>
    <p>
      This request is modeled after the
      <a href="https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#window_showMessageRequest">
      same request from the LSP specification</a>.
    </p>
    
    
  <h4>parameters:</h4><dl><dt class="field"><b>type: <a href="#type_MessageType">MessageType</a></b></dt><dd>
        
        <p>
          The type of the message.
        </p>
      </dd><dt class="field"><b>message: String</b></dt><dd>
        
        <p>
          The message to be displayed.
        </p>
      </dd><dt class="field"><b>actions: List&lt;<a href="#type_MessageAction">MessageAction</a>&gt;</b></dt><dd>
        
        <p>
          The labels of the buttons by which the user can dismiss the message.
        </p>
      </dd></dl><h4>returns:</h4><dl><dt class="field"><b>action: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The label of the action that was selected by the user. May be
          omitted or `null` if the user dismissed the message without
          clicking an action button.
        </p>
      </dd></dl></dd></dl><h3>Notifications</h3><dl><dt class="notification"><a name="notification_server.connected">server.connected</a></dt><dd><div class="box"><pre>notification: {
  "event": "server.connected"
  "params": {
    "<b>version</b>": String
    "<b>pid</b>": int
  }
}</pre></div>
    <p>
      Reports that the server is running. This notification is
      issued once after the server has started running but before
      any requests are processed to let the client know that it
      started correctly.
    </p>
    <p>
      It is not possible to subscribe to or unsubscribe from this
      notification.
    </p>
    
  <h4>parameters:</h4><dl><dt class="field"><b>version: String</b></dt><dd>
        
        <p>The version number of the analysis server.</p>
      </dd><dt class="field"><b>pid: int</b></dt><dd>
        
        <p>The process id of the analysis server process.</p>
      </dd></dl></dd><dt class="notification"><a name="notification_server.error">server.error</a></dt><dd><div class="box"><pre>notification: {
  "event": "server.error"
  "params": {
    "<b>isFatal</b>": bool
    "<b>message</b>": String
    "<b>stackTrace</b>": String
  }
}</pre></div>
    <p>
      Reports that an unexpected error has occurred while
      executing the server. This notification is not used for
      problems with specific requests (which are returned as part
      of the response) but is used for exceptions that occur while
      performing other tasks, such as analysis or preparing
      notifications.
    </p>
    <p>
      It is not possible to subscribe to or unsubscribe from this
      notification.
    </p>
    
  <h4>parameters:</h4><dl><dt class="field"><b>isFatal: bool</b></dt><dd>
        
        <p>
          True if the error is a fatal error, meaning that the
          server will shutdown automatically after sending this
          notification.
        </p>
      </dd><dt class="field"><b>message: String</b></dt><dd>
        
        <p>
          The error message indicating what kind of error was
          encountered.
        </p>
      </dd><dt class="field"><b>stackTrace: String</b></dt><dd>
        
        <p>
          The stack trace associated with the generation of the
          error, used for debugging the server.
        </p>
      </dd></dl></dd><dt class="notification"><a name="notification_server.pluginError">server.pluginError</a></dt><dd><div class="box"><pre>notification: {
  "event": "server.pluginError"
  "params": {
    "<b>message</b>": String
  }
}</pre></div>
    <p>
      Reports that an unexpected error has occurred while
      setting up an analyzer plugin, or during a plugin's
      execution.
    </p>
    <p>
      It is not possible to subscribe to or unsubscribe from this
      notification.
    </p>
    
  <h4>parameters:</h4><dl><dt class="field"><b>message: String</b></dt><dd>
        
        <p>
          The error message indicating what kind of error was
          encountered.
        </p>
      </dd></dl></dd><dt class="notification"><a name="notification_server.status">server.status</a></dt><dd><div class="box"><pre>notification: {
  "event": "server.status"
  "params": {
    "<b>analysis</b>": <span style="color:#999999">optional</span> <a href="#type_AnalysisStatus">AnalysisStatus</a>
    "<b>pub</b>": <span style="color:#999999">optional</span> <a href="#type_PubStatus">PubStatus</a>
  }
}</pre></div>
    <p>
      Reports the current status of the server. Parameters are
      omitted if there has been no change in the status
      represented by that parameter.
    </p>
    <p>
      This notification is not subscribed to by default. Clients
      can subscribe by including the value <tt>"STATUS"</tt> in
      the list of services passed in a server.setSubscriptions
      request.
    </p>
    
  <h4>parameters:</h4><dl><dt class="field"><b>analysis: <a href="#type_AnalysisStatus">AnalysisStatus</a><span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The current status of analysis, including whether
          analysis is being performed and if so what is being
          analyzed.
        </p>
      </dd><dt class="field"><b><span class="deprecated">pub</span>: <a href="#type_PubStatus">PubStatus</a><span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The current status of pub execution, indicating whether we are
          currently running pub.
        </p>

        <p>
          Note: this status type is deprecated, and is no longer sent by
          the server.
      </p>
      </dd></dl></dd></dl>
<h2 class="domain"><a name="domain_analysis">analysis domain</a></h2>
  <p>
    The analysis domain contains API's related to the analysis of
    files.
  </p>
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
<h3>Requests</h3><dl><dt class="request"><a name="request_analysis.getErrors">analysis.getErrors</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "analysis.getErrors"
  "params": {
    "<b>file</b>": <a href="#type_FilePath">FilePath</a>
  }
}</pre><br><pre>response: {
  "id": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
  "result": {
    "<b>errors</b>": List&lt;<a href="#type_AnalysisError">AnalysisError</a>&gt;
  }
}</pre></div>
    <p>
      Return the errors associated with the given file. If the
      errors for the given file have not yet been computed, or the
      most recently computed errors for the given file are out of
      date, then the response for this request will be delayed
      until they have been computed. If some or all of the errors
      for the file cannot be computed, then the subset of the
      errors that can be computed will be returned and the
      response will contain an error to indicate why the errors
      could not be computed. If the content of the file changes after this
      request was received but before a response could be sent, then an
      error of type <tt>CONTENT_MODIFIED</tt> will be generated.
    </p>
    <p>
      This request is intended to be used by clients that cannot
      asynchronously apply updated error information. Clients that
      <b>can</b> apply error information as it becomes available
      should use the information provided by the 'analysis.errors'
      notification.
    </p>
    <p>
      If a request is made for a file which does not exist, or
      which is not currently subject to analysis (e.g. because it
      is not associated with any analysis root specified to
      analysis.setAnalysisRoots), an error of type
      <tt>GET_ERRORS_INVALID_FILE</tt> will be generated.
    </p>
    
    
  <h4>parameters:</h4><dl><dt class="field"><b>file: <a href="#type_FilePath">FilePath</a></b></dt><dd>
        
        <p>
          The file for which errors are being requested.
        </p>
      </dd></dl><h4>returns:</h4><dl><dt class="field"><b>errors: List&lt;<a href="#type_AnalysisError">AnalysisError</a>&gt;</b></dt><dd>
        
        <p>
          The errors associated with the file.
        </p>
      </dd></dl></dd><dt class="request"><a name="request_analysis.getHover">analysis.getHover</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "analysis.getHover"
  "params": {
    "<b>file</b>": <a href="#type_FilePath">FilePath</a>
    "<b>offset</b>": int
  }
}</pre><br><pre>response: {
  "id": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
  "result": {
    "<b>hovers</b>": List&lt;<a href="#type_HoverInformation">HoverInformation</a>&gt;
  }
}</pre></div>
    <p>
      Return the hover information associate with the given
      location. If some or all of the hover information is not
      available at the time this request is processed the
      information will be omitted from the response.
    </p>
    
    
  <h4>parameters:</h4><dl><dt class="field"><b>file: <a href="#type_FilePath">FilePath</a></b></dt><dd>
        
        <p>
          The file in which hover information is being requested.
        </p>
      </dd><dt class="field"><b>offset: int</b></dt><dd>
        
        <p>
          The offset for which hover information is being requested.
        </p>
      </dd></dl><h4>returns:</h4><dl><dt class="field"><b>hovers: List&lt;<a href="#type_HoverInformation">HoverInformation</a>&gt;</b></dt><dd>
        
        <p>
          The hover information associated with the
          location. The list will be empty if no information
          could be determined for the location. The list can
          contain multiple items if the file is being analyzed
          in multiple contexts in conflicting ways (such as a
          part that is included in multiple libraries).
        </p>
      </dd></dl></dd><dt class="request"><a name="request_analysis.getLibraryDependencies">analysis.getLibraryDependencies</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "analysis.getLibraryDependencies"
}</pre><br><pre>response: {
  "id": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
  "result": {
    "<b>libraries</b>": List&lt;<a href="#type_FilePath">FilePath</a>&gt;
    "<b>packageMap</b>": Map&lt;String, Map&lt;String, List&lt;<a href="#type_FilePath">FilePath</a>&gt;&gt;&gt;
  }
}</pre></div>
    <p>
      Return library dependency information for use in client-side indexing
      and package URI resolution.
    </p>
    <p>
      Clients that are only using the libraries field should consider using the
      analyzedFiles notification instead.
    </p>
    
  <h4>returns:</h4><dl><dt class="field"><b>libraries: List&lt;<a href="#type_FilePath">FilePath</a>&gt;</b></dt><dd>
        
        <p>
          A list of the paths of library elements referenced by
          files in existing analysis roots.
        </p>
      </dd><dt class="field"><b>packageMap: Map&lt;String, Map&lt;String, List&lt;<a href="#type_FilePath">FilePath</a>&gt;&gt;&gt;</b></dt><dd>
        
        <p>
          A mapping from context source roots to package maps which map
          package names to source directories for use in client-side
          package URI resolution.
        </p>
      </dd></dl></dd><dt class="request"><a name="request_analysis.getNavigation">analysis.getNavigation</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "analysis.getNavigation"
  "params": {
    "<b>file</b>": <a href="#type_FilePath">FilePath</a>
    "<b>offset</b>": int
    "<b>length</b>": int
  }
}</pre><br><pre>response: {
  "id": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
  "result": {
    "<b>files</b>": List&lt;<a href="#type_FilePath">FilePath</a>&gt;
    "<b>targets</b>": List&lt;<a href="#type_NavigationTarget">NavigationTarget</a>&gt;
    "<b>regions</b>": List&lt;<a href="#type_NavigationRegion">NavigationRegion</a>&gt;
  }
}</pre></div>
    <p>
      Return the navigation information associated with the given region of
      the given file. If the navigation information for the given file has
      not yet been computed, or the most recently computed navigation
      information for the given file is out of date, then the response for
      this request will be delayed until it has been computed. If the
      content of the file changes after this request was received but before
      a response could be sent, then an error of type
      <tt>CONTENT_MODIFIED</tt> will be generated.
    </p>
    <p>
      If a navigation region overlaps (but extends either before or after)
      the given region of the file it will be included in the result. This
      means that it is theoretically possible to get the same navigation
      region in response to multiple requests. Clients can avoid this by
      always choosing a region that starts at the beginning of a line and
      ends at the end of a (possibly different) line in the file.
    </p>
    <p>
      If a request is made for a file which does not exist, or
      which is not currently subject to analysis (e.g. because it
      is not associated with any analysis root specified to
      analysis.setAnalysisRoots), an error of type
      <tt>GET_NAVIGATION_INVALID_FILE</tt> will be generated.
    </p>
    
    
  <h4>parameters:</h4><dl><dt class="field"><b>file: <a href="#type_FilePath">FilePath</a></b></dt><dd>
        
        <p>
          The file in which navigation information is being requested.
        </p>
      </dd><dt class="field"><b>offset: int</b></dt><dd>
        
        <p>
          The offset of the region for which navigation information is being
          requested.
        </p>
      </dd><dt class="field"><b>length: int</b></dt><dd>
        
        <p>
          The length of the region for which navigation information is being
          requested.
        </p>
      </dd></dl><h4>returns:</h4><dl><dt class="field"><b>files: List&lt;<a href="#type_FilePath">FilePath</a>&gt;</b></dt><dd>
        
        <p>
          A list of the paths of files that are referenced by the navigation
          targets.
        </p>
      </dd><dt class="field"><b>targets: List&lt;<a href="#type_NavigationTarget">NavigationTarget</a>&gt;</b></dt><dd>
        
        <p>
          A list of the navigation targets that are referenced by the
          navigation regions.
        </p>
      </dd><dt class="field"><b>regions: List&lt;<a href="#type_NavigationRegion">NavigationRegion</a>&gt;</b></dt><dd>
        
        <p>
          A list of the navigation regions within the requested region of
          the file.
        </p>
      </dd></dl></dd><dt class="request deprecated"><a name="request_analysis.getReachableSources">analysis.getReachableSources</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "analysis.getReachableSources"
  "params": {
    "<b>file</b>": <a href="#type_FilePath">FilePath</a>
  }
}</pre><br><pre>response: {
  "id": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
  "result": {
    "<b>sources</b>": Map&lt;String, List&lt;String&gt;&gt;
  }
}</pre></div>
    <p>
      Return the transitive closure of reachable sources for a given file.
    </p>
    <p>
      If a request is made for a file which does not exist, or
      which is not currently subject to analysis (e.g. because it
      is not associated with any analysis root specified to
      analysis.setAnalysisRoots), an error of type
      <tt>GET_REACHABLE_SOURCES_INVALID_FILE</tt> will be generated.
    </p>
    
    
  <h4>parameters:</h4><dl><dt class="field"><b>file: <a href="#type_FilePath">FilePath</a></b></dt><dd>
        
        <p>
          The file for which reachable source information is being requested.
        </p>
      </dd></dl><h4>returns:</h4><dl><dt class="field"><b>sources: Map&lt;String, List&lt;String&gt;&gt;</b></dt><dd>
        
        <p>
          A mapping from source URIs to directly reachable source URIs. For
          example,
          a file "foo.dart" that imports "bar.dart" would have the corresponding
          mapping
          { "file:///foo.dart" : ["file:///bar.dart"] }. If "bar.dart" has
          further imports
          (or exports) there will be a mapping from the URI "file:///bar.dart"
          to them.
          To check if a specific URI is reachable from a given file, clients can
          check
          for its presence in the resulting key set.
        </p>
      </dd></dl></dd><dt class="request"><a name="request_analysis.reanalyze">analysis.reanalyze</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "analysis.reanalyze"
}</pre><br><pre>response: {
  "id": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
}</pre></div>
    <p>
      Force re-reading of all potentially changed files, re-resolving of all
      referenced URIs, and corresponding re-analysis of everything affected in
      the current analysis roots.
    </p>
  </dd><dt class="request"><a name="request_analysis.setAnalysisRoots">analysis.setAnalysisRoots</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "analysis.setAnalysisRoots"
  "params": {
    "<b>included</b>": List&lt;<a href="#type_FilePath">FilePath</a>&gt;
    "<b>excluded</b>": List&lt;<a href="#type_FilePath">FilePath</a>&gt;
    "<b>packageRoots</b>": <span style="color:#999999">optional</span> Map&lt;<a href="#type_FilePath">FilePath</a>, <a href="#type_FilePath">FilePath</a>&gt;
  }
}</pre><br><pre>response: {
  "id": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
}</pre></div>
    <p>
      Sets the root paths used to determine which files to analyze. The set
      of files to be analyzed are all of the files in one of the root paths
      that are not either explicitly or implicitly excluded. A file is
      explicitly excluded if it is in one of the excluded paths. A file is
      implicitly excluded if it is in a subdirectory of one of the root
      paths where the name of the subdirectory starts with a period (that
      is, a hidden directory).
    </p>
    <p>
      Note that this request determines the set of requested
      analysis roots. The actual set of analysis roots at any
      given time is the intersection of this set with the set of
      files and directories actually present on the
      filesystem. When the filesystem changes, the actual set of
      analysis roots is automatically updated, but the set of
      requested analysis roots is unchanged. This means that if
      the client sets an analysis root before the root becomes
      visible to server in the filesystem, there is no error; once
      the server sees the root in the filesystem it will start
      analyzing it. Similarly, server will stop analyzing files
      that are removed from the file system but they will remain
      in the set of requested roots.
    </p>
    <p>
      If an included path represents a file, then server will look
      in the directory containing the file for a pubspec.yaml
      file. If none is found, then the parents of the directory
      will be searched until such a file is found or the root of
      the file system is reached. If such a file is found, it will
      be used to resolve package: URI's within the file.
    </p>
    
  <h4>parameters:</h4><dl><dt class="field"><b>included: List&lt;<a href="#type_FilePath">FilePath</a>&gt;</b></dt><dd>
        
        <p>
          A list of the files and directories that should be
          analyzed.
        </p>
      </dd><dt class="field"><b>excluded: List&lt;<a href="#type_FilePath">FilePath</a>&gt;</b></dt><dd>
        
        <p>
          A list of the files and directories within the
          included directories that should not be analyzed.
        </p>
      </dd><dt class="field"><b>packageRoots: Map&lt;<a href="#type_FilePath">FilePath</a>, <a href="#type_FilePath">FilePath</a>&gt;<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          A mapping from source directories to package roots
          that should override the normal package: URI resolution
          mechanism.
        </p>
        <p>
          If a package root is a file, then the analyzer
          will behave as though that file is a
          ".dart_tool/package_config.json" file in the
          source directory. The effect is the same as specifying the file
          as a "--packages" parameter to the Dart VM when
          executing any Dart file inside the source directory.
        </p>
        <p>
          Files in any directories that are not overridden by this
          mapping have their package: URI's resolved using the
          normal pubspec.yaml mechanism. If this field is absent,
          or the empty map is specified, that indicates that the
          normal pubspec.yaml mechanism should always be used.
        </p>
      </dd></dl></dd><dt class="request"><a name="request_analysis.setGeneralSubscriptions">analysis.setGeneralSubscriptions</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "analysis.setGeneralSubscriptions"
  "params": {
    "<b>subscriptions</b>": List&lt;<a href="#type_GeneralAnalysisService">GeneralAnalysisService</a>&gt;
  }
}</pre><br><pre>response: {
  "id": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
}</pre></div>
    <p>
      Subscribe for general services (that is, services that are not
      specific to individual files). All previous subscriptions are replaced
      by the given set of services.
    </p>
    <p>
      It is an error if any of the elements in the list are not valid
      services. If there is an error, then the current subscriptions will
      remain unchanged.
    </p>
    
  <h4>parameters:</h4><dl><dt class="field"><b>subscriptions: List&lt;<a href="#type_GeneralAnalysisService">GeneralAnalysisService</a>&gt;</b></dt><dd>
        
        <p>A list of the services being subscribed to.</p>
      </dd></dl></dd><dt class="request"><a name="request_analysis.setPriorityFiles">analysis.setPriorityFiles</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "analysis.setPriorityFiles"
  "params": {
    "<b>files</b>": List&lt;<a href="#type_FilePath">FilePath</a>&gt;
  }
}</pre><br><pre>response: {
  "id": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
}</pre></div>
    <p>
      Set the priority files to the files in the given list. A
      priority file is a file that is given priority when
      scheduling which analysis work to do first. The list
      typically contains those files that are visible to the user
      and those for which analysis results will have the biggest
      impact on the user experience. The order of the files within
      the list is significant: the first file will be given higher
      priority than the second, the second higher priority than
      the third, and so on.
    </p>
    <p>
      Note that this request determines the set of requested
      priority files. The actual set of priority files is the
      intersection of the requested set of priority files with the
      set of files currently subject to analysis. (See
      analysis.setSubscriptions for a description of files that
      are subject to analysis.)
    </p>
    <p>
      If a requested priority file is a directory it is ignored,
      but remains in the set of requested priority files so that
      if it later becomes a file it can be included in the set of
      actual priority files.
    </p>
    
  <h4>parameters:</h4><dl><dt class="field"><b>files: List&lt;<a href="#type_FilePath">FilePath</a>&gt;</b></dt><dd>
        
        <p>
          The files that are to be a priority for analysis.
        </p>
      </dd></dl></dd><dt class="request"><a name="request_analysis.setSubscriptions">analysis.setSubscriptions</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "analysis.setSubscriptions"
  "params": {
    "<b>subscriptions</b>": Map&lt;<a href="#type_AnalysisService">AnalysisService</a>, List&lt;<a href="#type_FilePath">FilePath</a>&gt;&gt;
  }
}</pre><br><pre>response: {
  "id": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
}</pre></div>
    <p>
      Subscribe for services that are specific to individual files.
      All previous subscriptions are replaced by the current set of
      subscriptions. If a given service is not included as a key in the map
      then no files will be subscribed to the service, exactly as if the
      service had been included in the map with an explicit empty list of
      files.
    </p>
    <p>
      Note that this request determines the set of requested
      subscriptions. The actual set of subscriptions at any given
      time is the intersection of this set with the set of files
      currently subject to analysis. The files currently subject
      to analysis are the set of files contained within an actual
      analysis root but not excluded, plus all of the files
      transitively reachable from those files via import, export
      and part directives. (See analysis.setAnalysisRoots for an
      explanation of how the actual analysis roots are
      determined.) When the actual analysis roots change, the
      actual set of subscriptions is automatically updated, but
      the set of requested subscriptions is unchanged.
    </p>
    <p>
      If a requested subscription is a directory it is ignored,
      but remains in the set of requested subscriptions so that if
      it later becomes a file it can be included in the set of
      actual subscriptions.
    </p>
    <p>
      It is an error if any of the keys in the map are not valid
      services. If there is an error, then the existing
      subscriptions will remain unchanged.
    </p>
    
  <h4>parameters:</h4><dl><dt class="field"><b>subscriptions: Map&lt;<a href="#type_AnalysisService">AnalysisService</a>, List&lt;<a href="#type_FilePath">FilePath</a>&gt;&gt;</b></dt><dd>
        
        <p>
          A table mapping services to a list of the files being
          subscribed to the service.
        </p>
      </dd></dl></dd><dt class="request"><a name="request_analysis.updateContent">analysis.updateContent</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "analysis.updateContent"
  "params": {
    "<b>files</b>": Map&lt;<a href="#type_FilePath">FilePath</a>, <a href="#type_AddContentOverlay">AddContentOverlay</a> | <a href="#type_ChangeContentOverlay">ChangeContentOverlay</a> | <a href="#type_RemoveContentOverlay">RemoveContentOverlay</a>&gt;
  }
}</pre><br><pre>response: {
  "id": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
  "result": {
  }
}</pre></div>
    <p>
      Update the content of one or more files. Files that were
      previously updated but not included in this update remain
      unchanged. This effectively represents an overlay of the
      filesystem. The files whose content is overridden are
      therefore seen by server as being files with the given
      content, even if the files do not exist on the filesystem or
      if the file path represents the path to a directory on the
      filesystem.
    </p>
    
    
  <h4>parameters:</h4><dl><dt class="field"><b>files: Map&lt;<a href="#type_FilePath">FilePath</a>, <a href="#type_AddContentOverlay">AddContentOverlay</a> | <a href="#type_ChangeContentOverlay">ChangeContentOverlay</a> | <a href="#type_RemoveContentOverlay">RemoveContentOverlay</a>&gt;</b></dt><dd>
        
        <p>
          A table mapping the files whose content has changed to a
          description of the content change.
        </p>
      </dd></dl><h4>returns:</h4><dl></dl></dd><dt class="request deprecated"><a name="request_analysis.updateOptions">analysis.updateOptions</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "analysis.updateOptions"
  "params": {
    "<b>options</b>": <a href="#type_AnalysisOptions">AnalysisOptions</a>
  }
}</pre><br><pre>response: {
  "id": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
}</pre></div>
    <p><b>Deprecated:</b> all of the options can be set by users in
      an analysis options file.</p>
    <p>
      Update the options controlling analysis based on the given
      set of options. Any options that are not included in the
      analysis options will not be changed. If there are options
      in the analysis options that are not valid, they will be
      silently ignored.
    </p>
    
  <h4>parameters:</h4><dl><dt class="field"><b>options: <a href="#type_AnalysisOptions">AnalysisOptions</a></b></dt><dd>
        
        <p>
          The options that are to be used to control analysis.
        </p>
      </dd></dl></dd></dl><h3>Notifications</h3><dl><dt class="notification"><a name="notification_analysis.analyzedFiles">analysis.analyzedFiles</a></dt><dd><div class="box"><pre>notification: {
  "event": "analysis.analyzedFiles"
  "params": {
    "<b>directories</b>": List&lt;<a href="#type_FilePath">FilePath</a>&gt;
  }
}</pre></div>
    <p>
      Reports the paths of the files that are being analyzed.
    </p>
    <p>
      This notification is not subscribed to by default. Clients can
      subscribe by including the value <tt>"ANALYZED_FILES"</tt> in the list
      of services passed in an analysis.setGeneralSubscriptions request.
    </p>
    
  <h4>parameters:</h4><dl><dt class="field"><b>directories: List&lt;<a href="#type_FilePath">FilePath</a>&gt;</b></dt><dd>
        
        <p>
          A list of the paths of the files that are being analyzed.
        </p>
      </dd></dl></dd><dt class="notification"><a name="notification_analysis.closingLabels">analysis.closingLabels</a></dt><dd><div class="box"><pre>notification: {
  "event": "analysis.closingLabels"
  "params": {
    "<b>file</b>": <a href="#type_FilePath">FilePath</a>
    "<b>labels</b>": List&lt;<a href="#type_ClosingLabel">ClosingLabel</a>&gt;
  }
}</pre></div>
    <p>
      Reports closing labels relevant to a given file.
    </p>
    <p>
      This notification is not subscribed to by default. Clients
      can subscribe by including the value <tt>"CLOSING_LABELS"</tt>
      in the list of services passed in an
      analysis.setSubscriptions request.
    </p>
    
  <h4>parameters:</h4><dl><dt class="field"><b>file: <a href="#type_FilePath">FilePath</a></b></dt><dd>
        
        <p>
          The file the closing labels relate to.
        </p>
      </dd><dt class="field"><b>labels: List&lt;<a href="#type_ClosingLabel">ClosingLabel</a>&gt;</b></dt><dd>
        
        <p>
          Closing labels relevant to the file. Each item
          represents a useful label associated with some range
          with may be useful to display to the user within the editor
          at the end of the range to indicate what construct is closed
          at that location. Closing labels include constructor/method
          calls and List arguments that span multiple lines.
          Note that the ranges that are returned can overlap
          each other because they may be associated with
          constructs that can be nested.
        </p>
      </dd></dl></dd><dt class="notification"><a name="notification_analysis.errors">analysis.errors</a></dt><dd><div class="box"><pre>notification: {
  "event": "analysis.errors"
  "params": {
    "<b>file</b>": <a href="#type_FilePath">FilePath</a>
    "<b>errors</b>": List&lt;<a href="#type_AnalysisError">AnalysisError</a>&gt;
  }
}</pre></div>
    <p>
      Reports the errors associated with a given file. The set of
      errors included in the notification is always a complete
      list that supersedes any previously reported errors.
    </p>
    
  <h4>parameters:</h4><dl><dt class="field"><b>file: <a href="#type_FilePath">FilePath</a></b></dt><dd>
        
        <p>
          The file containing the errors.
        </p>
      </dd><dt class="field"><b>errors: List&lt;<a href="#type_AnalysisError">AnalysisError</a>&gt;</b></dt><dd>
        
        <p>
          The errors contained in the file.
        </p>
      </dd></dl></dd><dt class="notification"><a name="notification_analysis.flushResults">analysis.flushResults</a></dt><dd><div class="box"><pre>notification: {
  "event": "analysis.flushResults"
  "params": {
    "<b>files</b>": List&lt;<a href="#type_FilePath">FilePath</a>&gt;
  }
}</pre></div>
    <p>
      Reports that any analysis results that were previously
      associated with the given files should be considered to be
      invalid because those files are no longer being analyzed,
      either because the analysis root that contained it is no
      longer being analyzed or because the file no longer exists.
    </p>
    <p>
      If a file is included in this notification and at some later
      time a notification with results for the file is received,
      clients should assume that the file is once again being
      analyzed and the information should be processed.
    </p>
    <p>
      It is not possible to subscribe to or unsubscribe from this
      notification.
    </p>
    
  <h4>parameters:</h4><dl><dt class="field"><b>files: List&lt;<a href="#type_FilePath">FilePath</a>&gt;</b></dt><dd>
        
        <p>
          The files that are no longer being analyzed.
        </p>
      </dd></dl></dd><dt class="notification"><a name="notification_analysis.folding">analysis.folding</a></dt><dd><div class="box"><pre>notification: {
  "event": "analysis.folding"
  "params": {
    "<b>file</b>": <a href="#type_FilePath">FilePath</a>
    "<b>regions</b>": List&lt;<a href="#type_FoldingRegion">FoldingRegion</a>&gt;
  }
}</pre></div>
    <p>
      Reports the folding regions associated with a given
      file. Folding regions can be nested, but will not be
      overlapping. Nesting occurs when a foldable element, such as
      a method, is nested inside another foldable element such as
      a class.
    </p>
    <p>
      This notification is not subscribed to by default. Clients
      can subscribe by including the value <tt>"FOLDING"</tt> in
      the list of services passed in an analysis.setSubscriptions
      request.
    </p>
    
  <h4>parameters:</h4><dl><dt class="field"><b>file: <a href="#type_FilePath">FilePath</a></b></dt><dd>
        
        <p>
          The file containing the folding regions.
        </p>
      </dd><dt class="field"><b>regions: List&lt;<a href="#type_FoldingRegion">FoldingRegion</a>&gt;</b></dt><dd>
        
        <p>
          The folding regions contained in the file.
        </p>
      </dd></dl></dd><dt class="notification"><a name="notification_analysis.highlights">analysis.highlights</a></dt><dd><div class="box"><pre>notification: {
  "event": "analysis.highlights"
  "params": {
    "<b>file</b>": <a href="#type_FilePath">FilePath</a>
    "<b>regions</b>": List&lt;<a href="#type_HighlightRegion">HighlightRegion</a>&gt;
  }
}</pre></div>
    <p>
      Reports the highlight regions associated with a given file.
    </p>
    <p>
      This notification is not subscribed to by default. Clients
      can subscribe by including the value <tt>"HIGHLIGHTS"</tt>
      in the list of services passed in an
      analysis.setSubscriptions request.
    </p>
    
  <h4>parameters:</h4><dl><dt class="field"><b>file: <a href="#type_FilePath">FilePath</a></b></dt><dd>
        
        <p>
          The file containing the highlight regions.
        </p>
      </dd><dt class="field"><b>regions: List&lt;<a href="#type_HighlightRegion">HighlightRegion</a>&gt;</b></dt><dd>
        
        <p>
          The highlight regions contained in the file. Each
          highlight region represents a particular syntactic or
          semantic meaning associated with some range. Note that
          the highlight regions that are returned can overlap
          other highlight regions if there is more than one
          meaning associated with a particular region.
        </p>
      </dd></dl></dd><dt class="notification"><a name="notification_analysis.implemented">analysis.implemented</a></dt><dd><div class="box"><pre>notification: {
  "event": "analysis.implemented"
  "params": {
    "<b>file</b>": <a href="#type_FilePath">FilePath</a>
    "<b>classes</b>": List&lt;<a href="#type_ImplementedClass">ImplementedClass</a>&gt;
    "<b>members</b>": List&lt;<a href="#type_ImplementedMember">ImplementedMember</a>&gt;
  }
}</pre></div>
    <p>
      Reports the classes that are implemented or extended and
      class members that are implemented or overridden in a file.
    </p>
    <p>
      This notification is not subscribed to by default. Clients
      can subscribe by including the value <tt>"IMPLEMENTED"</tt> in
      the list of services passed in an analysis.setSubscriptions
      request.
    </p>
    
  <h4>parameters:</h4><dl><dt class="field"><b>file: <a href="#type_FilePath">FilePath</a></b></dt><dd>
        
        <p>
          The file with which the implementations are associated.
        </p>
      </dd><dt class="field"><b>classes: List&lt;<a href="#type_ImplementedClass">ImplementedClass</a>&gt;</b></dt><dd>
        
        <p>
          The classes defined in the file that are implemented or extended.
        </p>
      </dd><dt class="field"><b>members: List&lt;<a href="#type_ImplementedMember">ImplementedMember</a>&gt;</b></dt><dd>
        
        <p>
          The member defined in the file that are implemented or overridden.
        </p>
      </dd></dl></dd><dt class="notification"><a name="notification_analysis.invalidate">analysis.invalidate</a></dt><dd><div class="box"><pre>notification: {
  "event": "analysis.invalidate"
  "params": {
    "<b>file</b>": <a href="#type_FilePath">FilePath</a>
    "<b>offset</b>": int
    "<b>length</b>": int
    "<b>delta</b>": int
  }
}</pre></div>
    <p>
      Reports that the navigation information associated with a region of a
      single file has become invalid and should be re-requested.
    </p>
    <p>
      This notification is not subscribed to by default. Clients can
      subscribe by including the value <tt>"INVALIDATE"</tt> in the list of
      services passed in an analysis.setSubscriptions request.
    </p>
    
  <h4>parameters:</h4><dl><dt class="field"><b>file: <a href="#type_FilePath">FilePath</a></b></dt><dd>
        
        <p>
          The file whose information has been invalidated.
        </p>
      </dd><dt class="field"><b>offset: int</b></dt><dd>
        
        <p>
          The offset of the invalidated region.
        </p>
      </dd><dt class="field"><b>length: int</b></dt><dd>
        
        <p>
          The length of the invalidated region.
        </p>
      </dd><dt class="field"><b>delta: int</b></dt><dd>
        
        <p>
          The delta to be applied to the offsets in information that follows
          the invalidated region in order to update it so that it doesn't
          need to be re-requested.
        </p>
      </dd></dl></dd><dt class="notification"><a name="notification_analysis.navigation">analysis.navigation</a></dt><dd><div class="box"><pre>notification: {
  "event": "analysis.navigation"
  "params": {
    "<b>file</b>": <a href="#type_FilePath">FilePath</a>
    "<b>regions</b>": List&lt;<a href="#type_NavigationRegion">NavigationRegion</a>&gt;
    "<b>targets</b>": List&lt;<a href="#type_NavigationTarget">NavigationTarget</a>&gt;
    "<b>files</b>": List&lt;<a href="#type_FilePath">FilePath</a>&gt;
  }
}</pre></div>
    <p>
      Reports the navigation targets associated with a given file.
    </p>
    <p>
      This notification is not subscribed to by default. Clients
      can subscribe by including the value <tt>"NAVIGATION"</tt>
      in the list of services passed in an
      analysis.setSubscriptions request.
    </p>
    
  <h4>parameters:</h4><dl><dt class="field"><b>file: <a href="#type_FilePath">FilePath</a></b></dt><dd>
        
        <p>
          The file containing the navigation regions.
        </p>
      </dd><dt class="field"><b>regions: List&lt;<a href="#type_NavigationRegion">NavigationRegion</a>&gt;</b></dt><dd>
        
        <p>
          The navigation regions contained in the file.
          The regions are sorted by their offsets.
          Each navigation region represents a list of targets
          associated with some range. The lists will usually
          contain a single target, but can contain more in the
          case of a part that is included in multiple libraries
          or in Dart code that is compiled against multiple
          versions of a package. Note that the navigation
          regions that are returned do not overlap other
          navigation regions.
        </p>
      </dd><dt class="field"><b>targets: List&lt;<a href="#type_NavigationTarget">NavigationTarget</a>&gt;</b></dt><dd>
        
        <p>
          The navigation targets referenced in the file.
          They are referenced by <tt>NavigationRegion</tt>s by their
          index in this array.
        </p>
      </dd><dt class="field"><b>files: List&lt;<a href="#type_FilePath">FilePath</a>&gt;</b></dt><dd>
        
        <p>
          The files containing navigation targets referenced in the file.
          They are referenced by <tt>NavigationTarget</tt>s by their
          index in this array.
        </p>
      </dd></dl></dd><dt class="notification"><a name="notification_analysis.occurrences">analysis.occurrences</a></dt><dd><div class="box"><pre>notification: {
  "event": "analysis.occurrences"
  "params": {
    "<b>file</b>": <a href="#type_FilePath">FilePath</a>
    "<b>occurrences</b>": List&lt;<a href="#type_Occurrences">Occurrences</a>&gt;
  }
}</pre></div>
    <p>
      Reports the occurrences of references to elements within a
      single file.
    </p>
    <p>
      This notification is not subscribed to by default. Clients
      can subscribe by including the value <tt>"OCCURRENCES"</tt>
      in the list of services passed in an
      analysis.setSubscriptions request.
    </p>
    
  <h4>parameters:</h4><dl><dt class="field"><b>file: <a href="#type_FilePath">FilePath</a></b></dt><dd>
        
        <p>
          The file in which the references occur.
        </p>
      </dd><dt class="field"><b>occurrences: List&lt;<a href="#type_Occurrences">Occurrences</a>&gt;</b></dt><dd>
        
        <p>
          The occurrences of references to elements within the
          file.
        </p>
      </dd></dl></dd><dt class="notification"><a name="notification_analysis.outline">analysis.outline</a></dt><dd><div class="box"><pre>notification: {
  "event": "analysis.outline"
  "params": {
    "<b>file</b>": <a href="#type_FilePath">FilePath</a>
    "<b>kind</b>": <a href="#type_FileKind">FileKind</a>
    "<b>libraryName</b>": <span style="color:#999999">optional</span> String
    "<b>outline</b>": <a href="#type_Outline">Outline</a>
  }
}</pre></div>
    <p>
      Reports the outline associated with a single file.
    </p>
    <p>
      This notification is not subscribed to by default. Clients
      can subscribe by including the value <tt>"OUTLINE"</tt> in
      the list of services passed in an analysis.setSubscriptions
      request.
    </p>
    
  <h4>parameters:</h4><dl><dt class="field"><b>file: <a href="#type_FilePath">FilePath</a></b></dt><dd>
        
        <p>
          The file with which the outline is associated.
        </p>
      </dd><dt class="field"><b>kind: <a href="#type_FileKind">FileKind</a></b></dt><dd>
        
        <p>
          The kind of the file.
        </p>
      </dd><dt class="field"><b>libraryName: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The name of the library defined by the file using a "library"
          directive, or referenced by a "part of" directive. If both
          "library" and "part of" directives are present, then the
          "library" directive takes precedence.
          This field will be omitted if the file has neither "library"
          nor "part of" directives.
        </p>
      </dd><dt class="field"><b>outline: <a href="#type_Outline">Outline</a></b></dt><dd>
        
        <p>
          The outline associated with the file.
        </p>
      </dd></dl></dd><dt class="notification"><a name="notification_analysis.overrides">analysis.overrides</a></dt><dd><div class="box"><pre>notification: {
  "event": "analysis.overrides"
  "params": {
    "<b>file</b>": <a href="#type_FilePath">FilePath</a>
    "<b>overrides</b>": List&lt;<a href="#type_Override">Override</a>&gt;
  }
}</pre></div>
    <p>
      Reports the overriding members in a file.
    </p>
    <p>
      This notification is not subscribed to by default. Clients
      can subscribe by including the value <tt>"OVERRIDES"</tt> in
      the list of services passed in an analysis.setSubscriptions
      request.
    </p>
    
  <h4>parameters:</h4><dl><dt class="field"><b>file: <a href="#type_FilePath">FilePath</a></b></dt><dd>
        
        <p>
          The file with which the overrides are associated.
        </p>
      </dd><dt class="field"><b>overrides: List&lt;<a href="#type_Override">Override</a>&gt;</b></dt><dd>
        
        <p>
          The overrides associated with the file.
        </p>
      </dd></dl></dd></dl>
<h2 class="domain"><a name="domain_completion">completion domain</a></h2>
  <p>
    The code completion domain contains commands related to
    getting code completion suggestions.
  </p>
  
  
  
  
<h3>Requests</h3><dl><dt class="request"><a name="request_completion.getSuggestions2">completion.getSuggestions2</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "completion.getSuggestions2"
  "params": {
    "<b>file</b>": <a href="#type_FilePath">FilePath</a>
    "<b>offset</b>": int
    "<b>maxResults</b>": int
    "<b>completionCaseMatchingMode</b>": <span style="color:#999999">optional</span> <a href="#type_CompletionCaseMatchingMode">CompletionCaseMatchingMode</a>
  }
}</pre><br><pre>response: {
  "id": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
  "result": {
    "<b>replacementOffset</b>": int
    "<b>replacementLength</b>": int
    "<b>suggestions</b>": List&lt;<a href="#type_CompletionSuggestion">CompletionSuggestion</a>&gt;
    "<b>isIncomplete</b>": bool
  }
}</pre></div>
    <p>
      Request that completion suggestions for the given offset in the given
      file be returned. The suggestions will be filtered using fuzzy matching
      with the already existing prefix.
    </p>
    
    
  <h4>parameters:</h4><dl><dt class="field"><b>file: <a href="#type_FilePath">FilePath</a></b></dt><dd>
        
        <p>
          The file containing the point at which suggestions are to be made.
        </p>
      </dd><dt class="field"><b>offset: int</b></dt><dd>
        
        <p>
          The offset within the file at which suggestions are to be made.
        </p>
      </dd><dt class="field"><b>maxResults: int</b></dt><dd>
        
        <p>
          The maximum number of suggestions to return. If the number of
          suggestions after filtering is greater than the <tt>maxResults</tt>,
          then <tt>isIncomplete</tt> is set to <tt>true</tt>.
        </p>
      </dd><dt class="field"><b>completionCaseMatchingMode: <a href="#type_CompletionCaseMatchingMode">CompletionCaseMatchingMode</a><span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The mode of code completion being invoked. If no value is provided,
          <tt>MATCH_FIRST_CHAR</tt> will be assumed.
        </p>
      </dd></dl><h4>returns:</h4><dl><dt class="field"><b>replacementOffset: int</b></dt><dd>
        
        <p>
          The offset of the start of the text to be  replaced. This will be
          different from the offset used  to request the completion suggestions
          if there was a portion of an identifier before the original offset.
          In particular, the replacementOffset will be the offset of the
          beginning of said identifier.
        </p>
      </dd><dt class="field"><b>replacementLength: int</b></dt><dd>
        
        <p>
          The length of the text to be replaced if the remainder of the
          identifier containing the cursor is to be replaced when the
          suggestion is applied (that is, the number of characters in the
          existing identifier).
        </p>
      </dd><dt class="field"><b>suggestions: List&lt;<a href="#type_CompletionSuggestion">CompletionSuggestion</a>&gt;</b></dt><dd>
        
        <p>
          The completion suggestions being reported. This list is filtered
          by the already existing prefix, and sorted first by relevance,
          and (if the same) by the suggestion text. The list will have at
          most <tt>maxResults</tt> items. If the user types a new keystroke,
          the client is expected to either do local filtering (when the
          returned list was complete), or ask the server again (if
          <tt>isIncomplete</tt> was <tt>true</tt>).
        </p>
        <p>
          This list contains suggestions from both imported, and not yet
          imported libraries. Items from not yet imported libraries will
          have <tt>isNotImported</tt> set to <tt>true</tt>.
        </p>
      </dd><dt class="field"><b>isIncomplete: bool</b></dt><dd>
        
        <p>
          True if the number of suggestions after filtering was greater than
          the requested <tt>maxResults</tt>.
        </p>
      </dd></dl></dd><dt class="request deprecated"><a name="request_completion.registerLibraryPaths">completion.registerLibraryPaths</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "completion.registerLibraryPaths"
  "params": {
    "<b>paths</b>": List&lt;<a href="#type_LibraryPathSet">LibraryPathSet</a>&gt;
  }
}</pre><br><pre>response: {
  "id": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
}</pre></div>
    <p>
      The client can make this request to express interest in certain
      libraries to receive completion suggestions from based on the client path.
      If this request is received before the client has used
      'completion.setSubscriptions' to subscribe to the <tt>AVAILABLE_SUGGESTION_SETS</tt>
      service, then an error of type <tt>NOT_SUBSCRIBED_TO_AVAILABLE_SUGGESTION_SETS</tt>
      will be generated. All previous paths are replaced by the given set of paths.
    </p>
    
  <h4>parameters:</h4><dl><dt class="field"><b>paths: List&lt;<a href="#type_LibraryPathSet">LibraryPathSet</a>&gt;</b></dt><dd>
        
        <p>
          A list of objects each containing a path and the additional libraries from which
          the client is interested in receiving completion suggestions.
          If one configured path is beneath another, the descendant
          will override the ancestors' configured libraries of interest.
        </p>
      </dd></dl></dd><dt class="request"><a name="request_completion.getSuggestionDetails2">completion.getSuggestionDetails2</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "completion.getSuggestionDetails2"
  "params": {
    "<b>file</b>": <a href="#type_FilePath">FilePath</a>
    "<b>offset</b>": int
    "<b>completion</b>": String
    "<b>libraryUri</b>": String
  }
}</pre><br><pre>response: {
  "id": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
  "result": {
    "<b>completion</b>": String
    "<b>change</b>": <a href="#type_SourceChange">SourceChange</a>
  }
}</pre></div>
    <p>
      Clients must make this request when the user has selected a completion
      suggestion with the <tt>isNotImported</tt> field set to <tt>true</tt>.
      The server will respond with the text to insert, as well as any
      <tt>SourceChange</tt> that needs to be applied in case the completion
      requires an additional import to be  added. The text to insert might be
      different from the original suggestion to include an import prefix if the
      library will be imported with a prefix to avoid shadowing
      conflicts in the file.
    </p>
    
    
  <h4>parameters:</h4><dl><dt class="field"><b>file: <a href="#type_FilePath">FilePath</a></b></dt><dd>
        
        <p>
          The path of the file into which this completion is being inserted.
        </p>
      </dd><dt class="field"><b>offset: int</b></dt><dd>
        
        <p>
          The offset in the file where the completion will be inserted.
        </p>
      </dd><dt class="field"><b>completion: String</b></dt><dd>
        
        <p>
          The <tt>completion</tt> from the selected
          <tt>CompletionSuggestion</tt>.  It could be a name of a class, or a
          name of a constructor in form "typeName.constructorName()", or an
          enumeration constant in form "enumName.constantName", etc.
        </p>
      </dd><dt class="field"><b>libraryUri: String</b></dt><dd>
        
        <p>
          The URI of the library to import, so that the element referenced
          in the <tt>completion</tt> becomes accessible.
        </p>
      </dd></dl><h4>returns:</h4><dl><dt class="field"><b>completion: String</b></dt><dd>
        
        <p>
          The full text to insert, which possibly includes now an import prefix.
          The client should insert this text, not the <tt>completion</tt> from
          the selected <tt>CompletionSuggestion</tt>.
        </p>
      </dd><dt class="field"><b>change: <a href="#type_SourceChange">SourceChange</a></b></dt><dd>
        
        <p>
          A change for the client to apply to make the accepted completion
          suggestion available. In most cases the change is to add a new
          import directive to the file.
        </p>
      </dd></dl></dd></dl><h3>Notifications</h3><dl><dt class="notification"><a name="notification_completion.existingImports">completion.existingImports</a></dt><dd><div class="box"><pre>notification: {
  "event": "completion.existingImports"
  "params": {
    "<b>file</b>": <a href="#type_FilePath">FilePath</a>
    "<b>imports</b>": <a href="#type_ExistingImports">ExistingImports</a>
  }
}</pre></div>
    <p>
      Reports existing imports in a library. This notification may be sent
      multiple times for a library. When a notification is processed, clients
      should replace any previous information for the library.
    </p>
    
  <h4>parameters:</h4><dl><dt class="field"><b>file: <a href="#type_FilePath">FilePath</a></b></dt><dd>
        
        <p>
          The defining file of the library.
        </p>
      </dd><dt class="field"><b>imports: <a href="#type_ExistingImports">ExistingImports</a></b></dt><dd>
        
        <p>
          The existing imports in the library.
        </p>
      </dd></dl></dd></dl>
<h2 class="domain"><a name="domain_search">search domain</a></h2>
  <p>
    The search domain contains commands related to searches that
    can be performed against the code base.
  </p>
  
  
  
  
  
  
  
<h3>Requests</h3><dl><dt class="request"><a name="request_search.findElementReferences">search.findElementReferences</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "search.findElementReferences"
  "params": {
    "<b>file</b>": <a href="#type_FilePath">FilePath</a>
    "<b>offset</b>": int
    "<b>includePotential</b>": bool
  }
}</pre><br><pre>response: {
  "<b>id</b>": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
  "result": {
    "<b>id</b>": <span style="color:#999999">optional</span> <a href="#type_SearchId">SearchId</a>
    "<b>element</b>": <span style="color:#999999">optional</span> <a href="#type_Element">Element</a>
  }
}</pre></div>
    <p>
      Perform a search for references to the element defined or
      referenced at the given offset in the given file.
    </p>
    <p>
      An identifier is returned immediately, and individual
      results will be returned via the search.results notification
      as they become available.
    </p>
    
    
  <h4>parameters:</h4><dl><dt class="field"><b>file: <a href="#type_FilePath">FilePath</a></b></dt><dd>
        
        <p>
          The file containing the declaration of or reference to
          the element used to define the search.
        </p>
      </dd><dt class="field"><b>offset: int</b></dt><dd>
        
        <p>
          The offset within the file of the declaration of or
          reference to the element.
        </p>
      </dd><dt class="field"><b>includePotential: bool</b></dt><dd>
        
        <p>
          True if potential matches are to be included in the
          results.
        </p>
      </dd></dl><h4>returns:</h4><dl><dt class="field"><b>id: <a href="#type_SearchId">SearchId</a><span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The identifier used to associate results with this
          search request.
        </p>
        <p>
          If no element was found at the given location, this
          field will be absent, and no results will be reported
          via the search.results notification.
        </p>
      </dd><dt class="field"><b>element: <a href="#type_Element">Element</a><span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The element referenced or defined at the given offset
          and whose references will be returned in the search
          results.
        </p>
        <p>
          If no element was found at the given location, this
          field will be absent.
        </p>
      </dd></dl></dd><dt class="request"><a name="request_search.findMemberDeclarations">search.findMemberDeclarations</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "search.findMemberDeclarations"
  "params": {
    "<b>name</b>": String
  }
}</pre><br><pre>response: {
  "<b>id</b>": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
  "result": {
    "<b>id</b>": <a href="#type_SearchId">SearchId</a>
  }
}</pre></div>
    <p>
      Perform a search for declarations of members whose name is
      equal to the given name.
    </p>
    <p>
      An identifier is returned immediately, and individual
      results will be returned via the search.results notification
      as they become available.
    </p>
    
    
  <h4>parameters:</h4><dl><dt class="field"><b>name: String</b></dt><dd>
        
        <p>
          The name of the declarations to be found.
        </p>
      </dd></dl><h4>returns:</h4><dl><dt class="field"><b>id: <a href="#type_SearchId">SearchId</a></b></dt><dd>
        
        <p>
          The identifier used to associate results with this
          search request.
        </p>
      </dd></dl></dd><dt class="request"><a name="request_search.findMemberReferences">search.findMemberReferences</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "search.findMemberReferences"
  "params": {
    "<b>name</b>": String
  }
}</pre><br><pre>response: {
  "<b>id</b>": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
  "result": {
    "<b>id</b>": <a href="#type_SearchId">SearchId</a>
  }
}</pre></div>
    <p>
      Perform a search for references to members whose name is
      equal to the given name. This search does not check to see
      that there is a member defined with the given name, so it is
      able to find references to undefined members as well.
    </p>
    <p>
      An identifier is returned immediately, and individual
      results will be returned via the search.results notification
      as they become available.
    </p>
    
    
  <h4>parameters:</h4><dl><dt class="field"><b>name: String</b></dt><dd>
        
        <p>
          The name of the references to be found.
        </p>
      </dd></dl><h4>returns:</h4><dl><dt class="field"><b>id: <a href="#type_SearchId">SearchId</a></b></dt><dd>
        
        <p>
          The identifier used to associate results with this
          search request.
        </p>
      </dd></dl></dd><dt class="request"><a name="request_search.findTopLevelDeclarations">search.findTopLevelDeclarations</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "search.findTopLevelDeclarations"
  "params": {
    "<b>pattern</b>": String
  }
}</pre><br><pre>response: {
  "<b>id</b>": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
  "result": {
    "<b>id</b>": <a href="#type_SearchId">SearchId</a>
  }
}</pre></div>
    <p>
      Perform a search for declarations of top-level elements
      (classes, typedefs, getters, setters, functions and fields)
      whose name matches the given pattern.
    </p>
    <p>
      An identifier is returned immediately, and individual
      results will be returned via the search.results notification
      as they become available.
    </p>
    
    
  <h4>parameters:</h4><dl><dt class="field"><b>pattern: String</b></dt><dd>
        
        <p>
          The regular expression used to match the names of the
          declarations to be found.
        </p>
      </dd></dl><h4>returns:</h4><dl><dt class="field"><b>id: <a href="#type_SearchId">SearchId</a></b></dt><dd>
        
        <p>
          The identifier used to associate results with this
          search request.
        </p>
      </dd></dl></dd><dt class="request"><a name="request_search.getTypeHierarchy">search.getTypeHierarchy</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "search.getTypeHierarchy"
  "params": {
    "<b>file</b>": <a href="#type_FilePath">FilePath</a>
    "<b>offset</b>": int
    "<b>superOnly</b>": <span style="color:#999999">optional</span> bool
  }
}</pre><br><pre>response: {
  "id": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
  "result": {
    "<b>hierarchyItems</b>": <span style="color:#999999">optional</span> List&lt;<a href="#type_TypeHierarchyItem">TypeHierarchyItem</a>&gt;
  }
}</pre></div>
    <p>
      Return the type hierarchy of the class declared or
      referenced at the given location.
    </p>
    
    
  <h4>parameters:</h4><dl><dt class="field"><b>file: <a href="#type_FilePath">FilePath</a></b></dt><dd>
        
        <p>
          The file containing the declaration or reference to the
          type for which a hierarchy is being requested.
        </p>
      </dd><dt class="field"><b>offset: int</b></dt><dd>
        
        <p>
          The offset of the name of the type within the file.
        </p>
      </dd><dt class="field"><b>superOnly: bool<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          True if the client is only requesting superclasses and
          interfaces hierarchy.
        </p>
      </dd></dl><h4>returns:</h4><dl><dt class="field"><b>hierarchyItems: List&lt;<a href="#type_TypeHierarchyItem">TypeHierarchyItem</a>&gt;<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          A list of the types in the requested hierarchy. The
          first element of the list is the item representing the
          type for which the hierarchy was requested. The index of
          other elements of the list is unspecified, but
          correspond to the integers used to reference supertype
          and subtype items within the items.
        </p>
        <p>
          This field will be absent if the code at the given file
          and offset does not represent a type, or if the file has
          not been sufficiently analyzed to allow a type hierarchy
          to be produced.
        </p>
      </dd></dl></dd></dl><h3>Notifications</h3><dl><dt class="notification"><a name="notification_search.results">search.results</a></dt><dd><div class="box"><pre>notification: {
  "event": "search.results"
  "params": {
    "<b>id</b>": <a href="#type_SearchId">SearchId</a>
    "<b>results</b>": List&lt;<a href="#type_SearchResult">SearchResult</a>&gt;
    "<b>isLast</b>": bool
  }
}</pre></div>
    <p>
      Reports some or all of the results of performing a requested
      search. Unlike other notifications, this notification
      contains search results that should be added to any
      previously received search results associated with the same
      search id.
    </p>
    
  <h4>parameters:</h4><dl><dt class="field"><b>id: <a href="#type_SearchId">SearchId</a></b></dt><dd>
        
        <p>
          The id associated with the search.
        </p>
      </dd><dt class="field"><b>results: List&lt;<a href="#type_SearchResult">SearchResult</a>&gt;</b></dt><dd>
        
        <p>
          The search results being reported.
        </p>
      </dd><dt class="field"><b>isLast: bool</b></dt><dd>
        
        <p>
          True if this is that last set of results that will be
          returned for the indicated search.
        </p>
      </dd></dl></dd></dl>
<h2 class="domain"><a name="domain_edit">edit domain</a></h2>
  <p>
    The edit domain contains commands related to edits that can be
    applied to the code.
  </p>
  
  
  
  
  
  
  
  
  
  
  
  
  
  
<h3>Requests</h3><dl><dt class="request"><a name="request_edit.format">edit.format</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "edit.format"
  "params": {
    "<b>file</b>": <a href="#type_FilePath">FilePath</a>
    "<b>selectionOffset</b>": int
    "<b>selectionLength</b>": int
    "<b>lineLength</b>": <span style="color:#999999">optional</span> int
  }
}</pre><br><pre>response: {
  "id": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
  "result": {
    "<b>edits</b>": List&lt;<a href="#type_SourceEdit">SourceEdit</a>&gt;
    "<b>selectionOffset</b>": int
    "<b>selectionLength</b>": int
  }
}</pre></div>
    <p>
      Format the contents of a single file. The currently selected region of
      text is passed in so that the selection can be preserved across the
      formatting operation. The updated selection will be as close to
      matching the original as possible, but whitespace at the beginning or
      end of the selected region will be ignored. If preserving selection
      information is not required, zero (0) can be specified for both the
      selection offset and selection length.
    </p>
    <p>
      If a request is made for a file which does not exist, or which is not
      currently subject to analysis (e.g. because it is not associated with
      any analysis root specified to analysis.setAnalysisRoots), an error of
      type <tt>FORMAT_INVALID_FILE</tt> will be generated. If the source
      contains syntax errors, an error of type <tt>FORMAT_WITH_ERRORS</tt>
      will be generated.
    </p>
    
    
  <h4>parameters:</h4><dl><dt class="field"><b>file: <a href="#type_FilePath">FilePath</a></b></dt><dd>
        
        <p>
          The file containing the code to be formatted.
        </p>
      </dd><dt class="field"><b>selectionOffset: int</b></dt><dd>
        
        <p>
          The offset of the current selection in the file.
        </p>
      </dd><dt class="field"><b>selectionLength: int</b></dt><dd>
        
        <p>
          The length of the current selection in the file.
        </p>
      </dd><dt class="field"><b>lineLength: int<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The line length to be used by the formatter. This value is ignored if a
          <tt>formatter.page_width</tt> has been configured in the relevant
          <tt>analysis_options.yaml</tt> file.
        </p>
      </dd></dl><h4>returns:</h4><dl><dt class="field"><b>edits: List&lt;<a href="#type_SourceEdit">SourceEdit</a>&gt;</b></dt><dd>
        
        <p>
          The edit(s) to be applied in order to format the code. The list
          will be empty if the code was already formatted (there are no
          changes).
        </p>
      </dd><dt class="field"><b>selectionOffset: int</b></dt><dd>
        
        <p>
          The offset of the selection after formatting the code.
        </p>
      </dd><dt class="field"><b>selectionLength: int</b></dt><dd>
        
        <p>
          The length of the selection after formatting the code.
        </p>
      </dd></dl></dd><dt class="request"><a name="request_edit.getAssists">edit.getAssists</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "edit.getAssists"
  "params": {
    "<b>file</b>": <a href="#type_FilePath">FilePath</a>
    "<b>offset</b>": int
    "<b>length</b>": int
  }
}</pre><br><pre>response: {
  "id": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
  "result": {
    "<b>assists</b>": List&lt;<a href="#type_SourceChange">SourceChange</a>&gt;
  }
}</pre></div>
    <p>
      Return the set of assists that are available at the given
      location. An assist is distinguished from a refactoring
      primarily by the fact that it affects a single file and does
      not require user input in order to be performed.
    </p>
    
    
  <h4>parameters:</h4><dl><dt class="field"><b>file: <a href="#type_FilePath">FilePath</a></b></dt><dd>
        
        <p>
          The file containing the code for which assists are being
          requested.
        </p>
      </dd><dt class="field"><b>offset: int</b></dt><dd>
        
        <p>
          The offset of the code for which assists are being
          requested.
        </p>
      </dd><dt class="field"><b>length: int</b></dt><dd>
        
        <p>
          The length of the code for which assists are being
          requested.
        </p>
      </dd></dl><h4>returns:</h4><dl><dt class="field"><b>assists: List&lt;<a href="#type_SourceChange">SourceChange</a>&gt;</b></dt><dd>
        
        <p>
          The assists that are available at the given location.
        </p>
      </dd></dl></dd><dt class="request"><a name="request_edit.getAvailableRefactorings">edit.getAvailableRefactorings</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "edit.getAvailableRefactorings"
  "params": {
    "<b>file</b>": <a href="#type_FilePath">FilePath</a>
    "<b>offset</b>": int
    "<b>length</b>": int
  }
}</pre><br><pre>response: {
  "id": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
  "result": {
    "<b>kinds</b>": List&lt;<a href="#type_RefactoringKind">RefactoringKind</a>&gt;
  }
}</pre></div>
    <p>
      Get a list of the kinds of refactorings that are valid for
      the given selection in the given file.
    </p>
    
    
  <h4>parameters:</h4><dl><dt class="field"><b>file: <a href="#type_FilePath">FilePath</a></b></dt><dd>
        
        <p>
          The file containing the code on which the refactoring
          would be based.
        </p>
      </dd><dt class="field"><b>offset: int</b></dt><dd>
        
        <p>
          The offset of the code on which the refactoring would be
          based.
        </p>
      </dd><dt class="field"><b>length: int</b></dt><dd>
        
        <p>
          The length of the code on which the refactoring would be
          based.
        </p>
      </dd></dl><h4>returns:</h4><dl><dt class="field"><b>kinds: List&lt;<a href="#type_RefactoringKind">RefactoringKind</a>&gt;</b></dt><dd>
        
        <p>
          The kinds of refactorings that are valid for the given
          selection.
        </p>
      </dd></dl></dd><dt class="request"><a name="request_edit.getFixes">edit.getFixes</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "edit.getFixes"
  "params": {
    "<b>file</b>": <a href="#type_FilePath">FilePath</a>
    "<b>offset</b>": int
  }
}</pre><br><pre>response: {
  "id": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
  "result": {
    "<b>fixes</b>": List&lt;<a href="#type_AnalysisErrorFixes">AnalysisErrorFixes</a>&gt;
  }
}</pre></div>
    <p>
      Return the set of fixes that are available for the errors at
      a given offset in a given file.
    </p>
    <p>
      If a request is made for a file which does not exist, or
      which is not currently subject to analysis (e.g. because it
      is not associated with any analysis root specified to
      analysis.setAnalysisRoots), an error of type
      <tt>GET_FIXES_INVALID_FILE</tt> will be generated.
    </p>
    
    
  <h4>parameters:</h4><dl><dt class="field"><b>file: <a href="#type_FilePath">FilePath</a></b></dt><dd>
        
        <p>
          The file containing the errors for which fixes are being
          requested.
        </p>
      </dd><dt class="field"><b>offset: int</b></dt><dd>
        
        <p>
          The offset used to select the errors for which fixes
          will be returned.
        </p>
      </dd></dl><h4>returns:</h4><dl><dt class="field"><b>fixes: List&lt;<a href="#type_AnalysisErrorFixes">AnalysisErrorFixes</a>&gt;</b></dt><dd>
        
        <p>
          The fixes that are available for the errors at the given offset.
        </p>
      </dd></dl></dd><dt class="request"><a name="request_edit.getPostfixCompletion">edit.getPostfixCompletion</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "edit.getPostfixCompletion"
  "params": {
    "<b>file</b>": <a href="#type_FilePath">FilePath</a>
    "<b>key</b>": String
    "<b>offset</b>": int
  }
}</pre><br><pre>response: {
  "id": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
  "result": {
    "<b>change</b>": <a href="#type_SourceChange">SourceChange</a>
  }
}</pre></div>
    <p>
      Get the changes required to convert the postfix template at the given
      location into the template's expanded form.
    </p>
    
    
  <h4>parameters:</h4><dl><dt class="field"><b>file: <a href="#type_FilePath">FilePath</a></b></dt><dd>
        
        <p>
          The file containing the postfix template to be expanded.
        </p>
      </dd><dt class="field"><b>key: String</b></dt><dd>
        
        <p>
          The unique name that identifies the template in use.
        </p>
      </dd><dt class="field"><b>offset: int</b></dt><dd>
        
        <p>
          The offset used to identify the code to which the template will be
          applied.
        </p>
      </dd></dl><h4>returns:</h4><dl><dt class="field"><b>change: <a href="#type_SourceChange">SourceChange</a></b></dt><dd>
        
        <p>
          The change to be applied in order to complete the statement.
        </p>
      </dd></dl></dd><dt class="request"><a name="request_edit.getRefactoring">edit.getRefactoring</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "edit.getRefactoring"
  "params": {
    "<b>kind</b>": <a href="#type_RefactoringKind">RefactoringKind</a>
    "<b>file</b>": <a href="#type_FilePath">FilePath</a>
    "<b>offset</b>": int
    "<b>length</b>": int
    "<b>validateOnly</b>": bool
    "<b>options</b>": <span style="color:#999999">optional</span> <a href="#type_RefactoringOptions">RefactoringOptions</a>
  }
}</pre><br><pre>response: {
  "id": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
  "result": {
    "<b>initialProblems</b>": List&lt;<a href="#type_RefactoringProblem">RefactoringProblem</a>&gt;
    "<b>optionsProblems</b>": List&lt;<a href="#type_RefactoringProblem">RefactoringProblem</a>&gt;
    "<b>finalProblems</b>": List&lt;<a href="#type_RefactoringProblem">RefactoringProblem</a>&gt;
    "<b>feedback</b>": <span style="color:#999999">optional</span> <a href="#type_RefactoringFeedback">RefactoringFeedback</a>
    "<b>change</b>": <span style="color:#999999">optional</span> <a href="#type_SourceChange">SourceChange</a>
    "<b>potentialEdits</b>": <span style="color:#999999">optional</span> List&lt;String&gt;
  }
}</pre></div>
    <p>
      Get the changes required to perform a refactoring.
    </p>
    <p>
      If another refactoring request is received during the processing
      of this one, an error of type <tt>REFACTORING_REQUEST_CANCELLED</tt>
      will be generated.
    </p>
    
    
  <h4>parameters:</h4><dl><dt class="field"><b>kind: <a href="#type_RefactoringKind">RefactoringKind</a></b></dt><dd>
        
        <p>
          The kind of refactoring to be performed.
        </p>
      </dd><dt class="field"><b>file: <a href="#type_FilePath">FilePath</a></b></dt><dd>
        
        <p>
          The file containing the code involved in the
          refactoring.
        </p>
      </dd><dt class="field"><b>offset: int</b></dt><dd>
        
        <p>
          The offset of the region involved in the refactoring.
        </p>
      </dd><dt class="field"><b>length: int</b></dt><dd>
        
        <p>
          The length of the region involved in the refactoring.
        </p>
      </dd><dt class="field"><b>validateOnly: bool</b></dt><dd>
        
        <p>
          True if the client is only requesting that the values of
          the options be validated and no change be generated.
        </p>
      </dd><dt class="field"><b>options: <a href="#type_RefactoringOptions">RefactoringOptions</a><span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          Data used to provide values provided by the user. The
          structure of the data is dependent on the kind of
          refactoring being performed. The data that is expected is
          documented in the section titled <a href="#refactorings">Refactorings</a>, labeled as
          "Options". This field can be omitted if the refactoring
          does not require any options or if the values of those
          options are not known.
        </p>
      </dd></dl><h4>returns:</h4><dl><dt class="field"><b>initialProblems: List&lt;<a href="#type_RefactoringProblem">RefactoringProblem</a>&gt;</b></dt><dd>
        
        <p>
          The initial status of the refactoring, i.e. problems related to
          the context in which the refactoring is requested.
          The array will be empty if there are no known problems.
        </p>
      </dd><dt class="field"><b>optionsProblems: List&lt;<a href="#type_RefactoringProblem">RefactoringProblem</a>&gt;</b></dt><dd>
        
        <p>
          The options validation status, i.e. problems in the given options,
          such as light-weight validation of a new name, flags
          compatibility, etc.
          The array will be empty if there are no known problems.
        </p>
      </dd><dt class="field"><b>finalProblems: List&lt;<a href="#type_RefactoringProblem">RefactoringProblem</a>&gt;</b></dt><dd>
        
        <p>
          The final status of the refactoring, i.e. problems identified in
          the result of a full, potentially expensive validation and / or
          change creation.
          The array will be empty if there are no known problems.
        </p>
      </dd><dt class="field"><b>feedback: <a href="#type_RefactoringFeedback">RefactoringFeedback</a><span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          Data used to provide feedback to the user. The structure
          of the data is dependent on the kind of refactoring
          being created. The data that is returned is documented
          in the section titled <a href="#refactorings">Refactorings</a>, labeled as
          "Feedback".
        </p>
      </dd><dt class="field"><b>change: <a href="#type_SourceChange">SourceChange</a><span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The changes that are to be applied to affect the
          refactoring. This field will be omitted if there are
          problems that prevent a set of changes from being
          computed, such as having no options specified for a
          refactoring that requires them, or if only validation
          was requested.
        </p>
      </dd><dt class="field"><b>potentialEdits: List&lt;String&gt;<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The ids of source edits that are not known to be valid. An edit is
          not known to be valid if there was insufficient type information
          for the server to be able to determine whether or not the code
          needs to be modified, such as when a member is being renamed and
          there is a reference to a member from an unknown type. This field
          will be omitted if the change field is omitted or if there are no
          potential edits for the refactoring.
        </p>
      </dd></dl></dd><dt class="request"><a name="request_edit.sortMembers">edit.sortMembers</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "edit.sortMembers"
  "params": {
    "<b>file</b>": <a href="#type_FilePath">FilePath</a>
  }
}</pre><br><pre>response: {
  "id": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
  "result": {
    "<b>edit</b>": <a href="#type_SourceFileEdit">SourceFileEdit</a>
  }
}</pre></div>
    <p>
      Sort all of the directives, unit and class members
      of the given Dart file.
    </p>
    <p>
      If a request is made for a file that does not exist, does not belong
      to an analysis root or is not a Dart file,
      <tt>SORT_MEMBERS_INVALID_FILE</tt> will be generated.
    </p>
    <p>
      If the Dart file has scan or parse errors,
      <tt>SORT_MEMBERS_PARSE_ERRORS</tt> will be generated.
    </p>
    
    
  <h4>parameters:</h4><dl><dt class="field"><b>file: <a href="#type_FilePath">FilePath</a></b></dt><dd>
        
        <p>
          The Dart file to sort.
        </p>
      </dd></dl><h4>returns:</h4><dl><dt class="field"><b>edit: <a href="#type_SourceFileEdit">SourceFileEdit</a></b></dt><dd>
        
        <p>
          The file edit that is to be applied to the given file to effect
          the sorting.
        </p>
      </dd></dl></dd><dt class="request"><a name="request_edit.organizeDirectives">edit.organizeDirectives</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "edit.organizeDirectives"
  "params": {
    "<b>file</b>": <a href="#type_FilePath">FilePath</a>
  }
}</pre><br><pre>response: {
  "id": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
  "result": {
    "<b>edit</b>": <a href="#type_SourceFileEdit">SourceFileEdit</a>
  }
}</pre></div>
    <p>
      Organizes all of the directives - removes unused imports and sorts
      directives of the given Dart file according to the
      <a href="https://dart.dev/guides/language/effective-dart/style">Dart Style
        Guide</a>.
    </p>
    <p>
      If a request is made for a file that does not exist, does not belong
      to an analysis root or is not a Dart file,
      <tt>FILE_NOT_ANALYZED</tt> will be generated.
    </p>
    <p>
      If directives of the Dart file cannot be organized, for example
      because it has scan or parse errors, or by other reasons,
      <tt>ORGANIZE_DIRECTIVES_ERROR</tt> will be generated. The message
      will provide details about the reason.
    </p>
    
    
  <h4>parameters:</h4><dl><dt class="field"><b>file: <a href="#type_FilePath">FilePath</a></b></dt><dd>
        
        <p>
          The Dart file to organize directives in.
        </p>
      </dd></dl><h4>returns:</h4><dl><dt class="field"><b>edit: <a href="#type_SourceFileEdit">SourceFileEdit</a></b></dt><dd>
        
        <p>
          The file edit that is to be applied to the given file to effect
          the organizing.
        </p>
      </dd></dl></dd></dl>
<h2 class="domain"><a name="domain_execution">execution domain</a></h2>
  <p>
    The execution domain contains commands related to providing an execution
    or debugging experience.
  </p>
  
  
  
  
  
  
<h3>Requests</h3><dl><dt class="request"><a name="request_execution.createContext">execution.createContext</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "execution.createContext"
  "params": {
    "<b>contextRoot</b>": <a href="#type_FilePath">FilePath</a>
  }
}</pre><br><pre>response: {
  "<b>id</b>": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
  "result": {
    "<b>id</b>": <a href="#type_ExecutionContextId">ExecutionContextId</a>
  }
}</pre></div>
    <p>
      Create an execution context for the executable file with the given
      path. The context that is created will persist until
      execution.deleteContext is used to delete it. Clients, therefore, are
      responsible for managing the lifetime of execution contexts.
    </p>
    
    
  <h4>parameters:</h4><dl><dt class="field"><b>contextRoot: <a href="#type_FilePath">FilePath</a></b></dt><dd>
        
        <p>
          The path of the Dart or HTML file that will be launched, or the
          path of the directory containing the file.
        </p>
      </dd></dl><h4>returns:</h4><dl><dt class="field"><b>id: <a href="#type_ExecutionContextId">ExecutionContextId</a></b></dt><dd>
        
        <p>
          The identifier used to refer to the execution context that was
          created.
        </p>
      </dd></dl></dd><dt class="request"><a name="request_execution.deleteContext">execution.deleteContext</a></dt><dd><div class="box"><pre>request: {
  "<b>id</b>": String
  "method": "execution.deleteContext"
  "params": {
    "<b>id</b>": <a href="#type_ExecutionContextId">ExecutionContextId</a>
  }
}</pre><br><pre>response: {
  "id": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
}</pre></div>
    <p>
      Delete the execution context with the given identifier. The context id
      is no longer valid after this command. The server is allowed to re-use
      ids when they are no longer valid.
    </p>
    
  <h4>parameters:</h4><dl><dt class="field"><b>id: <a href="#type_ExecutionContextId">ExecutionContextId</a></b></dt><dd>
        
        <p>
          The identifier of the execution context that is to be deleted.
        </p>
      </dd></dl></dd><dt class="request"><a name="request_execution.getSuggestions">execution.getSuggestions</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "execution.getSuggestions"
  "params": {
    "<b>code</b>": String
    "<b>offset</b>": int
    "<b>contextFile</b>": <a href="#type_FilePath">FilePath</a>
    "<b>contextOffset</b>": int
    "<b>variables</b>": List&lt;<a href="#type_RuntimeCompletionVariable">RuntimeCompletionVariable</a>&gt;
    "<b>expressions</b>": <span style="color:#999999">optional</span> List&lt;<a href="#type_RuntimeCompletionExpression">RuntimeCompletionExpression</a>&gt;
  }
}</pre><br><pre>response: {
  "id": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
  "result": {
    "<b>suggestions</b>": <span style="color:#999999">optional</span> List&lt;<a href="#type_CompletionSuggestion">CompletionSuggestion</a>&gt;
    "<b>expressions</b>": <span style="color:#999999">optional</span> List&lt;<a href="#type_RuntimeCompletionExpression">RuntimeCompletionExpression</a>&gt;
  }
}</pre></div>
    <p>
      Request completion suggestions for the given runtime context.
    </p>
    <p>
      It might take one or two requests of this type to get completion
      suggestions. The first request should have only "code", "offset",
      and "variables", but not "expressions". If there are sub-expressions that
      can have different runtime types, and are considered to be safe to
      evaluate at runtime (e.g. getters), so using their actual runtime types
      can improve completion results, the server will not include the
      "suggestions" field in the response, and instead will return the
      "expressions" field. The client will use debug API to get current runtime
      types for these sub-expressions and send another request, this time with
      "expressions". If there are no interesting sub-expressions to get
      runtime types for, or when the "expressions" field is provided by the
      client, the server will return "suggestions" in the response.
    </p>
    
    
  <h4>parameters:</h4><dl><dt class="field"><b>code: String</b></dt><dd>
        
        <p>
          The code to get suggestions in.
        </p>
      </dd><dt class="field"><b>offset: int</b></dt><dd>
        
        <p>
          The offset within the code to get suggestions at.
        </p>
      </dd><dt class="field"><b>contextFile: <a href="#type_FilePath">FilePath</a></b></dt><dd>
        
        <p>
          The path of the context file, e.g. the file of the current debugger
          frame. The combination of the context file and context offset can
          be used to ensure that all variables of the context are available
          for completion (with their static types).
        </p>
      </dd><dt class="field"><b>contextOffset: int</b></dt><dd>
        
        <p>
          The offset in the context file, e.g. the line offset in the current
          debugger frame.
        </p>
      </dd><dt class="field"><b>variables: List&lt;<a href="#type_RuntimeCompletionVariable">RuntimeCompletionVariable</a>&gt;</b></dt><dd>
        
        <p>
          The runtime context variables that are potentially referenced in the
          code.
        </p>
      </dd><dt class="field"><b>expressions: List&lt;<a href="#type_RuntimeCompletionExpression">RuntimeCompletionExpression</a>&gt;<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The list of sub-expressions in the code for which the client wants
          to provide runtime types. It does not have to be the full list of
          expressions requested by the server, for missing expressions their
          static types will be used.
        </p>
        <p>
          When this field is omitted, the server will return completion
          suggestions only when there are no interesting sub-expressions in the
          given code. The client may provide an empty list, in this case the
          server will return completion suggestions.
        </p>
      </dd></dl><h4>returns:</h4><dl><dt class="field"><b>suggestions: List&lt;<a href="#type_CompletionSuggestion">CompletionSuggestion</a>&gt;<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The completion suggestions. In contrast to usual completion request,
          suggestions for private elements also will be provided.
        </p>
        <p>
          If there are sub-expressions that can have different runtime types,
          and are considered to be safe to evaluate at runtime (e.g. getters),
          so using their actual runtime types can improve completion results,
          the server omits this field in the response, and instead will return
          the "expressions" field.
        </p>
      </dd><dt class="field"><b>expressions: List&lt;<a href="#type_RuntimeCompletionExpression">RuntimeCompletionExpression</a>&gt;<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The list of sub-expressions in the code for which the server would
          like to know runtime types to provide better completion suggestions.
        </p>
        <p>
          This field is omitted the field "suggestions" is returned.
        </p>
      </dd></dl></dd><dt class="request"><a name="request_execution.mapUri">execution.mapUri</a></dt><dd><div class="box"><pre>request: {
  "<b>id</b>": String
  "method": "execution.mapUri"
  "params": {
    "<b>id</b>": <a href="#type_ExecutionContextId">ExecutionContextId</a>
    "<b>file</b>": <span style="color:#999999">optional</span> <a href="#type_FilePath">FilePath</a>
    "<b>uri</b>": <span style="color:#999999">optional</span> String
  }
}</pre><br><pre>response: {
  "id": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
  "result": {
    "<b>file</b>": <span style="color:#999999">optional</span> <a href="#type_FilePath">FilePath</a>
    "<b>uri</b>": <span style="color:#999999">optional</span> String
  }
}</pre></div>
    <p>
      Map a URI from the execution context to the file that it corresponds
      to, or map a file to the URI that it corresponds to in the execution
      context.
    </p>
    <p>
      Exactly one of the file and uri fields must be provided. If both
      fields are provided, then an error of type <tt>INVALID_PARAMETER</tt>
      will be generated. Similarly, if neither field is provided, then an
      error of type <tt>INVALID_PARAMETER</tt> will be generated.
    </p>
    <p>
      If the file field is provided and the value is not the path of a file
      (either the file does not exist or the path references something other
      than a file), then an error of type <tt>INVALID_PARAMETER</tt> will
      be generated.
    </p>
    <p>
      If the uri field is provided and the value is not a valid URI or if
      the URI references something that is not a file (either a file that
      does not exist or something other than a file), then an error of type
      <tt>INVALID_PARAMETER</tt> will be generated.
    </p>
    <p>
      If the contextRoot used to create the execution context does not
      exist, then an error of type <tt>INVALID_EXECUTION_CONTEXT</tt> will
      be generated.
    </p>
    
    
  <h4>parameters:</h4><dl><dt class="field"><b>id: <a href="#type_ExecutionContextId">ExecutionContextId</a></b></dt><dd>
        
        <p>
          The identifier of the execution context in which the URI is to be
          mapped.
        </p>
      </dd><dt class="field"><b>file: <a href="#type_FilePath">FilePath</a><span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The path of the file to be mapped into a URI.
        </p>
      </dd><dt class="field"><b>uri: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The URI to be mapped into a file path.
        </p>
      </dd></dl><h4>returns:</h4><dl><dt class="field"><b>file: <a href="#type_FilePath">FilePath</a><span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The file to which the URI was mapped. This field is omitted if the
          uri field was not given in the request.
        </p>
      </dd><dt class="field"><b>uri: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The URI to which the file path was mapped. This field is omitted
          if the file field was not given in the request.
        </p>
      </dd></dl></dd><dt class="request deprecated"><a name="request_execution.setSubscriptions">execution.setSubscriptions</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "execution.setSubscriptions"
  "params": {
    "<b>subscriptions</b>": List&lt;<a href="#type_ExecutionService">ExecutionService</a>&gt;
  }
}</pre><br><pre>response: {
  "id": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
}</pre></div>
    <p>
      <b>Deprecated:</b> the analysis server no longer fires
      <tt>LAUNCH_DATA</tt> events.
    </p>
    <p>
      Subscribe for services. All previous subscriptions are replaced by the
      given set of services.
    </p>
    <p>
      It is an error if any of the elements in the list are not valid
      services. If there is an error, then the current subscriptions will
      remain unchanged.
    </p>
    
  <h4>parameters:</h4><dl><dt class="field"><b>subscriptions: List&lt;<a href="#type_ExecutionService">ExecutionService</a>&gt;</b></dt><dd>
        
        <p>
          A list of the services being subscribed to.
        </p>
      </dd></dl></dd></dl><h3>Notifications</h3><dl><dt class="notification"><a name="notification_execution.launchData">execution.launchData</a></dt><dd><div class="box"><pre>notification: {
  "event": "execution.launchData"
  "params": {
    "<b>file</b>": <a href="#type_FilePath">FilePath</a>
    "<b>kind</b>": <span style="color:#999999">optional</span> <a href="#type_ExecutableKind">ExecutableKind</a>
    "<b>referencedFiles</b>": <span style="color:#999999">optional</span> List&lt;<a href="#type_FilePath">FilePath</a>&gt;
  }
}</pre></div>
    <p>
      Reports information needed to allow a single file to be launched.
    </p>
    <p>
      This notification is not subscribed to by default. Clients can
      subscribe by including the value "LAUNCH_DATA" in the list of services
      passed in an <tt>execution.setSubscriptions</tt> request.
    </p>
    
  <h4>parameters:</h4><dl><dt class="field"><b>file: <a href="#type_FilePath">FilePath</a></b></dt><dd>
        
        <p>
          The file for which launch data is being provided. This will either
          be a Dart library or an HTML file.
        </p>
      </dd><dt class="field"><b>kind: <a href="#type_ExecutableKind">ExecutableKind</a><span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The kind of the executable file. This field is omitted if the file
          is not a Dart file.
        </p>
      </dd><dt class="field"><b>referencedFiles: List&lt;<a href="#type_FilePath">FilePath</a>&gt;<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          A list of the Dart files that are referenced by the file. This
          field is omitted if the file is not an HTML file.
        </p>
      </dd></dl></dd></dl>
<h2 class="domain"><a name="domain_diagnostic">diagnostic domain</a></h2>
  <p>
    The diagnostic domain contains server diagnostics APIs.
  </p>
  
  
<h3>Requests</h3><dl><dt class="request"><a name="request_diagnostic.getDiagnostics">diagnostic.getDiagnostics</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "diagnostic.getDiagnostics"
}</pre><br><pre>response: {
  "id": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
  "result": {
    "<b>contexts</b>": List&lt;<a href="#type_ContextData">ContextData</a>&gt;
  }
}</pre></div>
    <p>Return server diagnostics.</p>
    
  <h4>returns:</h4><dl><dt class="field"><b>contexts: List&lt;<a href="#type_ContextData">ContextData</a>&gt;</b></dt><dd>
        
        <p>The list of analysis contexts.</p>
      </dd></dl></dd><dt class="request"><a name="request_diagnostic.getServerPort">diagnostic.getServerPort</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "diagnostic.getServerPort"
}</pre><br><pre>response: {
  "id": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
  "result": {
    "<b>port</b>": int
  }
}</pre></div>
    <p>
      Return the port of the diagnostic web server. If the server is not running
      this call will start the server. If unable to start the diagnostic web
      server,
      this call will return an error of <tt>DEBUG_PORT_COULD_NOT_BE_OPENED</tt>.
    </p>
    
  <h4>returns:</h4><dl><dt class="field"><b>port: int</b></dt><dd>
        
        <p>The diagnostic server port.</p>
      </dd></dl></dd></dl>

<h2 class="domain"><a name="domain_flutter">flutter domain</a></h2>
  <p>
    The analysis domain contains API's related to Flutter support.
  </p>
  
  
  
  
<h3>Requests</h3><dl><dt class="request"><a name="request_flutter.setSubscriptions">flutter.setSubscriptions</a></dt><dd><div class="box"><pre>request: {
  "id": String
  "method": "flutter.setSubscriptions"
  "params": {
    "<b>subscriptions</b>": Map&lt;<a href="#type_FlutterService">FlutterService</a>, List&lt;<a href="#type_FilePath">FilePath</a>&gt;&gt;
  }
}</pre><br><pre>response: {
  "id": String
  "error": <span style="color:#999999">optional</span> <a href="#type_RequestError">RequestError</a>
}</pre></div>
    <p>
      Subscribe for services that are specific to individual files.
      All previous subscriptions are replaced by the current set of
      subscriptions. If a given service is not included as a key in the map
      then no files will be subscribed to the service, exactly as if the
      service had been included in the map with an explicit empty list of
      files.
    </p>
    <p>
      Note that this request determines the set of requested
      subscriptions. The actual set of subscriptions at any given
      time is the intersection of this set with the set of files
      currently subject to analysis. The files currently subject
      to analysis are the set of files contained within an actual
      analysis root but not excluded, plus all of the files
      transitively reachable from those files via import, export
      and part directives. (See analysis.setAnalysisRoots for an
      explanation of how the actual analysis roots are
      determined.) When the actual analysis roots change, the
      actual set of subscriptions is automatically updated, but
      the set of requested subscriptions is unchanged.
    </p>
    <p>
      If a requested subscription is a directory it is ignored,
      but remains in the set of requested subscriptions so that if
      it later becomes a file it can be included in the set of
      actual subscriptions.
    </p>
    <p>
      It is an error if any of the keys in the map are not valid
      services. If there is an error, then the existing
      subscriptions will remain unchanged.
    </p>
    
  <h4>parameters:</h4><dl><dt class="field"><b>subscriptions: Map&lt;<a href="#type_FlutterService">FlutterService</a>, List&lt;<a href="#type_FilePath">FilePath</a>&gt;&gt;</b></dt><dd>
        
        <p>
          A table mapping services to a list of the files being
          subscribed to the service.
        </p>
      </dd></dl></dd></dl><h3>Notifications</h3><dl><dt class="notification"><a name="notification_flutter.outline">flutter.outline</a></dt><dd><div class="box"><pre>notification: {
  "event": "flutter.outline"
  "params": {
    "<b>file</b>": <a href="#type_FilePath">FilePath</a>
    "<b>outline</b>": <a href="#type_FlutterOutline">FlutterOutline</a>
  }
}</pre></div>
    <p>
      Reports the Flutter outline associated with a single file.
    </p>
    <p>
      This notification is not subscribed to by default. Clients
      can subscribe by including the value <tt>"OUTLINE"</tt> in
      the list of services passed in an flutter.setSubscriptions
      request.
    </p>
    
  <h4>parameters:</h4><dl><dt class="field"><b>file: <a href="#type_FilePath">FilePath</a></b></dt><dd>
        
        <p>
          The file with which the outline is associated.
        </p>
      </dd><dt class="field"><b>outline: <a href="#type_FlutterOutline">FlutterOutline</a></b></dt><dd>
        
        <p>
          The outline associated with the file.
        </p>
      </dd></dl></dd></dl>


  <h2 class="domain"><a name="types">Types</a></h2>
  <p>
    This section contains descriptions of the data types referenced
    in the API's of the various domains.
  </p>
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
<dl><dt class="typeDefinition"><a name="type_AddContentOverlay">AddContentOverlay: object</a></dt><dd>
    <p>
      A directive to begin overlaying the contents of a file. The supplied
      content will be used for analysis in place of the file contents in the
      filesystem.
    </p>
    <p>
      If this directive is used on a file that already has a file content
      overlay, the old overlay is discarded and replaced with the new one.
    </p>
    
  <dl><dt class="field"><b>type = "add"</b></dt><dd>
        
      </dd><dt class="field"><b>content: String</b></dt><dd>
        
        <p>
          The new content of the file.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_AnalysisError">AnalysisError: object</a></dt><dd>
    <p>
      An indication of an error, warning, or hint that was produced by the
      analysis.
    </p>
    
  <dl><dt class="field"><b>severity: <a href="#type_AnalysisErrorSeverity">AnalysisErrorSeverity</a></b></dt><dd>
        
        <p>
          The severity of the error.
        </p>
      </dd><dt class="field"><b>type: <a href="#type_AnalysisErrorType">AnalysisErrorType</a></b></dt><dd>
        
        <p>
          The type of the error.
        </p>
      </dd><dt class="field"><b>location: <a href="#type_Location">Location</a></b></dt><dd>
        
        <p>
          The location associated with the error.
        </p>
      </dd><dt class="field"><b>message: String</b></dt><dd>
        
        <p>
          The message to be displayed for this error. The message should
          indicate what is wrong with the code and why it is wrong.
        </p>
      </dd><dt class="field"><b>correction: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The correction message to be displayed for this error. The correction
          message should indicate how the user can fix the error. The field is
          omitted if there is no correction message associated with the error
          code.
        </p>
      </dd><dt class="field"><b>code: String</b></dt><dd>
        
        <p>
          The name, as a string, of the error code associated with this error.
        </p>
      </dd><dt class="field"><b>url: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The URL of a page containing documentation associated with this error.
        </p>
      </dd><dt class="field"><b>contextMessages: List&lt;<a href="#type_DiagnosticMessage">DiagnosticMessage</a>&gt;<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          Additional messages associated with this diagnostic that provide
          context to help the user understand the diagnostic.
        </p>
      </dd><dt class="field"><b>hasFix: bool<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          A hint to indicate to interested clients that this error has an
          associated fix (or fixes). The absence of this field implies there
          are not known to be fixes. Note that since the operation to calculate
          whether fixes apply needs to be performant it is possible that
          complicated tests will be skipped and a false negative returned. For
          this reason, this attribute should be treated as a "hint". Despite the
          possibility of false negatives, no false positives should be returned.
          If a client sees this flag set they can proceed with the confidence
          that there are in fact associated fixes.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_AnalysisErrorFixes">AnalysisErrorFixes: object</a></dt><dd>
    <p>
      A list of fixes associated with a specific error.
    </p>
    
  <dl><dt class="field"><b>error: <a href="#type_AnalysisError">AnalysisError</a></b></dt><dd>
        
        <p>
          The error with which the fixes are associated.
        </p>
      </dd><dt class="field"><b>fixes: List&lt;<a href="#type_SourceChange">SourceChange</a>&gt;</b></dt><dd>
        
        <p>
          The fixes associated with the error.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_AnalysisErrorSeverity">AnalysisErrorSeverity: String</a></dt><dd>
    <p>
      An enumeration of the possible severities of analysis errors.
    </p>
    
  <dl><dt class="value">INFO</dt><dt class="value">WARNING</dt><dt class="value">ERROR</dt></dl></dd><dt class="typeDefinition"><a name="type_AnalysisErrorType">AnalysisErrorType: String</a></dt><dd>
    <p>
      An enumeration of the possible types of analysis errors.
    </p>
    
  <dl><dt class="value">CHECKED_MODE_COMPILE_TIME_ERROR</dt><dt class="value">COMPILE_TIME_ERROR</dt><dt class="value">HINT</dt><dt class="value">LINT</dt><dt class="value">STATIC_TYPE_WARNING</dt><dt class="value">STATIC_WARNING</dt><dt class="value">SYNTACTIC_ERROR</dt><dt class="value">TODO</dt></dl></dd><dt class="typeDefinition deprecated"><a name="type_AnalysisOptions">AnalysisOptions: object</a></dt><dd>
    <p><b>Deprecated:</b> the only reference to this type has been
      deprecated.</p>
    <p>
      A set of options controlling what kind of analysis is to be
      performed. If the value of a field is omitted the value of the
      option will not be changed.
    </p>
    
  <dl><dt class="field"><b><span class="deprecated">enableAsync</span>: bool<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p><b>Deprecated:</b> this feature is always enabled.</p>
        <p>
          True if the client wants to enable support for the
          proposed async feature.
        </p>
      </dd><dt class="field"><b><span class="deprecated">enableDeferredLoading</span>: bool<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p><b>Deprecated:</b> this feature is always enabled.</p>
        <p>
          True if the client wants to enable support for the
          proposed deferred loading feature.
        </p>
      </dd><dt class="field"><b><span class="deprecated">enableEnums</span>: bool<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p><b>Deprecated:</b> this feature is always enabled.</p>
        <p>
          True if the client wants to enable support for the
          proposed enum feature.
        </p>
      </dd><dt class="field"><b><span class="deprecated">enableNullAwareOperators</span>: bool<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p><b>Deprecated:</b> this feature is always enabled.</p>
        <p>
          True if the client wants to enable support for the
          proposed "null aware operators" feature.
        </p>
      </dd><dt class="field"><b>generateDart2jsHints: bool<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          True if hints that are specific to dart2js should be
          generated. This option is ignored if generateHints is false.
        </p>
      </dd><dt class="field"><b>generateHints: bool<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          True if hints should be generated as part of generating
          errors and warnings.
        </p>
      </dd><dt class="field"><b>generateLints: bool<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          True if lints should be generated as part of generating
          errors and warnings.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_AnalysisService">AnalysisService: String</a></dt><dd>
    <p>
      An enumeration of the services provided by the analysis domain that
      are related to a specific list of files.
    </p>
    
  <dl><dt class="value">CLOSING_LABELS</dt><dt class="value">FOLDING</dt><dt class="value">HIGHLIGHTS</dt><dt class="value">IMPLEMENTED</dt><dt class="value">INVALIDATE</dt><dd>
        
        <p>
          This service is not currently implemented and will become a
          GeneralAnalysisService in a future release.
        </p>
      </dd><dt class="value">NAVIGATION</dt><dt class="value">OCCURRENCES</dt><dt class="value">OUTLINE</dt><dt class="value">OVERRIDES</dt></dl></dd><dt class="typeDefinition"><a name="type_AnalysisStatus">AnalysisStatus: object</a></dt><dd>
    <p>
      An indication of the current state of analysis.
    </p>
    
  <dl><dt class="field"><b>isAnalyzing: bool</b></dt><dd>
        
        <p>True if analysis is currently being performed.</p>
      </dd><dt class="field"><b>analysisTarget: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The name of the current target of analysis. This field is
          omitted if analyzing is false.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_BulkFix">BulkFix: object</a></dt><dd>
    <p>
      A description of bulk fixes to a library.
    </p>
    
  <dl><dt class="field"><b>path: <a href="#type_FilePath">FilePath</a></b></dt><dd>
        
        <p>
          The path of the library.
        </p>
      </dd><dt class="field"><b>fixes: List&lt;<a href="#type_BulkFixDetail">BulkFixDetail</a>&gt;</b></dt><dd>
        
        <p>
          A list of bulk fix details.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_BulkFixDetail">BulkFixDetail: object</a></dt><dd>
    <p>
      A description of a fix applied to a library.
    </p>
    
  <dl><dt class="field"><b>code: String</b></dt><dd>
        
        <p>
          The code of the diagnostic associated with the fix.
        </p>
      </dd><dt class="field"><b>occurrences: int</b></dt><dd>
        
        <p>
          The number times the associated diagnostic was fixed in the associated
          source edit.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_ChangeContentOverlay">ChangeContentOverlay: object</a></dt><dd>
    <p>
      A directive to modify an existing file content overlay. One or more ranges
      of text are deleted from the old file content overlay and replaced with
      new text.
    </p>
    <p>
      The edits are applied in the order in which they occur in the list. This
      means that the offset of each edit must be correct under the assumption
      that all previous edits have been applied.
    </p>
    <p>
      It is an error to use this overlay on a file that does not yet have a file
      content overlay or that has had its overlay removed via
      <a href="#type_RemoveContentOverlay">RemoveContentOverlay</a>.
    </p>
    <p>
      If any of the edits cannot be applied due to its offset or length being
      out of range, an <tt>INVALID_OVERLAY_CHANGE</tt> error will be reported.
    </p>
    
  <dl><dt class="field"><b>type = "change"</b></dt><dd>
        
      </dd><dt class="field"><b>edits: List&lt;<a href="#type_SourceEdit">SourceEdit</a>&gt;</b></dt><dd>
        
        <p>
          The edits to be applied to the file.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_ClosingLabel">ClosingLabel: object</a></dt><dd>
    <p>
      A label that is associated with a range of code that may be useful to
      render at the end of the range to aid code readability. For example, a
      constructor call that spans multiple lines may result in a closing label
      to allow the constructor type/name to be rendered alongside the closing
      parenthesis.
    </p>
    
  <dl><dt class="field"><b>offset: int</b></dt><dd>
        
        <p>
          The offset of the construct being labelled.
        </p>
      </dd><dt class="field"><b>length: int</b></dt><dd>
        
        <p>
          The length of the whole construct to be labelled.
        </p>
      </dd><dt class="field"><b>label: String</b></dt><dd>
        
        <p>
          The label associated with this range that should be displayed to the
          user.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_CompletionCaseMatchingMode">CompletionCaseMatchingMode: String</a></dt><dd>
    <p>
      An enumeration of the character case matching modes that the user may set in the client.
    </p>
    
  <dl><dt class="value">FIRST_CHAR</dt><dd>
        
        <p>
          Match the first character case only when filtering completions, the default for this
          enumeration.
        </p>
      </dd><dt class="value">ALL_CHARS</dt><dd>
        
        <p>
          Match all character cases when filtering completion lists.
        </p>
      </dd><dt class="value">NONE</dt><dd>
        
        <p>
          Do not match character cases when filtering completion lists.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_CompletionMode">CompletionMode: String</a></dt><dd>
    <p>
      An enumeration of the kinds of code completion that users can invoke.
    </p>
    
  <dl><dt class="value">BASIC</dt><dd>
        
        <p>
          Basic code completion invocation type, and the default for this
          enumeration.
        </p>
      </dd><dt class="value">SMART</dt><dd>
        
        <p>
          Smart code completion, currently not implemented.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_CompletionSuggestion">CompletionSuggestion: object</a></dt><dd>
    <p>
      A suggestion for how to complete partially entered text. Many of the
      fields are optional, depending on the kind of element being suggested.
    </p>
    
  <dl><dt class="field"><b>kind: <a href="#type_CompletionSuggestionKind">CompletionSuggestionKind</a></b></dt><dd>
        
        <p>
          The kind of element being suggested.
        </p>
      </dd><dt class="field"><b>relevance: int</b></dt><dd>
        
        <p>
          The relevance of this completion suggestion where a higher number
          indicates a higher relevance.
        </p>
      </dd><dt class="field"><b>completion: String</b></dt><dd>
        
        <p>
          The identifier to be inserted if the suggestion is selected. If the
          suggestion is for a method or function, the client might want to
          additionally insert a template for the parameters. The information
          required in order to do so is contained in other fields.
        </p>
      </dd><dt class="field"><b>displayText: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          Text to be displayed in, for example, a completion pop-up. This field
          is only defined if the displayed text should be different than the
          completion.  Otherwise it is omitted.
        </p>
      </dd><dt class="field"><b>replacementOffset: int<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The offset of the start of the text to be
          replaced. If supplied, this should be used in
          preference to the offset provided on the
          containing completion results.

          This value may be provided independently of
          replacementLength (for example if only one
          differs from the completion result value).
        </p>
      </dd><dt class="field"><b>replacementLength: int<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The length of the text to be replaced.
          If supplied, this should be used in preference
          to the offset provided on the
          containing completion results.

          This value may be provided independently of
          replacementOffset (for example if only one
          differs from the completion result value).
        </p>
      </dd><dt class="field"><b>selectionOffset: int</b></dt><dd>
        
        <p>
          The offset, relative to the beginning of the completion, of where the
          selection should be placed after insertion.
        </p>
      </dd><dt class="field"><b>selectionLength: int</b></dt><dd>
        
        <p>
          The number of characters that should be selected after insertion.
        </p>
      </dd><dt class="field"><b>isDeprecated: bool</b></dt><dd>
        
        <p>
          True if the suggested element is deprecated.
        </p>
      </dd><dt class="field"><b>isPotential: bool</b></dt><dd>
        
        <p>
          True if the element is not known to be valid for the target. This
          happens if the type of the target is dynamic.
        </p>
      </dd><dt class="field"><b>docSummary: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          An abbreviated version of the Dartdoc associated with the element
          being suggested. This field is omitted if there is no Dartdoc
          associated with the element.
        </p>
      </dd><dt class="field"><b>docComplete: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The Dartdoc associated with the element being suggested. This field is
          omitted if there is no Dartdoc associated with the element.
        </p>
      </dd><dt class="field"><b>declaringType: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The class that declares the element being suggested. This field is
          omitted if the suggested element is not a member of a class.
        </p>
      </dd><dt class="field"><b>defaultArgumentListString: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          A default String for use in generating argument list source contents
          on the client side.
        </p>
      </dd><dt class="field"><b>defaultArgumentListTextRanges: List&lt;int&gt;<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          Pairs of offsets and lengths describing 'defaultArgumentListString'
          text ranges suitable for use by clients to set up linked edits of
          default argument source contents. For example, given an argument list
          string 'x, y', the corresponding text range [0, 1, 3, 1], indicates
          two text ranges of length 1, starting at offsets 0 and 3. Clients can
          use these ranges to treat the 'x' and 'y' values specially for linked
          edits.
        </p>
      </dd><dt class="field"><b>element: <a href="#type_Element">Element</a><span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          Information about the element reference being suggested.
        </p>
      </dd><dt class="field"><b>returnType: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The return type of the getter, function or method or the type of the
          field being suggested. This field is omitted if the suggested element
          is not a getter, function or method.
        </p>
      </dd><dt class="field"><b>parameterNames: List&lt;String&gt;<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The names of the parameters of the function or method being suggested.
          This field is omitted if the suggested element is not a setter,
          function or method.
        </p>
      </dd><dt class="field"><b>parameterTypes: List&lt;String&gt;<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The types of the parameters of the function or method being suggested.
          This field is omitted if the parameterNames field is omitted.
        </p>
      </dd><dt class="field"><b>requiredParameterCount: int<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The number of required parameters for the function or method being
          suggested. This field is omitted if the parameterNames field is
          omitted.
        </p>
      </dd><dt class="field"><b>hasNamedParameters: bool<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          True if the function or method being suggested has at least one named
          parameter. This field is omitted if the parameterNames field is
          omitted.
        </p>
      </dd><dt class="field"><b>parameterName: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The name of the optional parameter being suggested. This field is
          omitted if the suggestion is not the addition of an optional argument
          within an argument list.
        </p>
      </dd><dt class="field"><b>parameterType: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The type of the options parameter being suggested. This field is
          omitted if the parameterName field is omitted.
        </p>
      </dd><dt class="field"><b>libraryUri: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          This field  is omitted if <tt>getSuggestions</tt> was used rather
          than <tt>getSuggestions2</tt>.
        </p>
        <p>
          This field  is omitted if this suggestion corresponds to a locally
          declared element.
        </p>
        <p>
          If this suggestion corresponds to an already imported element,
          then this field is the URI of a library that provides this element,
          not the URI of the library where the element is declared.
        </p>
        <p>
          If this suggestion corresponds to an element from a not yet
          imported library, this field is the URI of a library that could be
          imported to make this suggestion  accessible in the file where
          completion was requested, such as <tt>package:foo/bar.dart</tt> or
          <tt>file:///home/me/workspace/foo/test/bar_test.dart</tt>.
        </p>
      </dd><dt class="field"><b>isNotImported: bool<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          True if the suggestion is for an element from a not yet imported
          library. This field is omitted if the element is declared locally,
          or is from library is already imported, so that the suggestion can
          be inserted as is, or if <tt>getSuggestions</tt> was used rather
          than <tt>getSuggestions2</tt>.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_CompletionSuggestionKind">CompletionSuggestionKind: String</a></dt><dd>
    <p>
      An enumeration of the kinds of elements that can be included in a
      completion suggestion.
    </p>
    
  <dl><dt class="value">ARGUMENT_LIST</dt><dd>
        
        <p>
          A list of arguments for the method or function that is being
          invoked. For this suggestion kind, the completion field is a
          textual representation of the invocation and the parameterNames,
          parameterTypes, and requiredParameterCount attributes are defined.
        </p>
      </dd><dt class="value">IMPORT</dt><dt class="value">IDENTIFIER</dt><dd>
        
        <p>
          The element identifier should be inserted at the completion
          location. For example "someMethod" in <tt>import 'myLib.dart' show
          someMethod;</tt>. For suggestions of this kind, the element
          attribute is defined and the completion field is the element's
          identifier.
        </p>
      </dd><dt class="value">INVOCATION</dt><dd>
        
        <p>
          The element is being invoked at the completion location. For
          example, 'someMethod' in <tt>x.someMethod();</tt>. For suggestions
          of this kind, the element attribute is defined and the completion
          field is the element's identifier.
        </p>
      </dd><dt class="value">KEYWORD</dt><dd>
        
        <p>
          A keyword is being suggested. For suggestions of this kind, the
          completion is the keyword.
        </p>
      </dd><dt class="value">NAMED_ARGUMENT</dt><dd>
        
        <p>
          A named argument for the current call site is being suggested. For
          suggestions of this kind, the completion is the named argument
          identifier including a trailing ':' and a space.
        </p>
      </dd><dt class="value">OPTIONAL_ARGUMENT</dt><dt class="value">OVERRIDE</dt><dd>
        
        <p>
          An overriding implementation of a class member is being suggested.
        </p>
      </dd><dt class="value">PARAMETER</dt><dt class="value">PACKAGE_NAME</dt><dd>
        
        <p>The name of a pub package is being suggested.</p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_ContextData">ContextData: object</a></dt><dd>
    <p>
      Information about an analysis context.
    </p>
    
  <dl><dt class="field"><b>name: String</b></dt><dd>
        
        <p>
          The name of the context.
        </p>
      </dd><dt class="field"><b>explicitFileCount: int</b></dt><dd>
        
        <p>
          Explicitly analyzed files.
        </p>
      </dd><dt class="field"><b>implicitFileCount: int</b></dt><dd>
        
        <p>
          Implicitly analyzed files.
        </p>
      </dd><dt class="field"><b>workItemQueueLength: int</b></dt><dd>
        
        <p>
          The number of work items in the queue.
        </p>
      </dd><dt class="field"><b>cacheEntryExceptions: List&lt;String&gt;</b></dt><dd>
        
        <p>
          Exceptions associated with cache entries.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_DiagnosticMessage">DiagnosticMessage: object</a></dt><dd>
    <p>
      A message associated with a diagnostic.
    </p>
    <p>
      For example, if the diagnostic is reporting that a variable has been
      referenced before it was declared, it might have a diagnostic message that
      indicates where the variable is declared.
    </p>
    
  <dl><dt class="field"><b>message: String</b></dt><dd>
        
        <p>
          The message to be displayed to the user.
        </p>
      </dd><dt class="field"><b>location: <a href="#type_Location">Location</a></b></dt><dd>
        
        <p>
          The location associated with or referenced by the message. Clients
          should provide the ability to navigate to the location.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_Element">Element: object</a></dt><dd>
    <p>
      Information about an element (something that can be declared in code).
    </p>
    
  <dl><dt class="field"><b>kind: <a href="#type_ElementKind">ElementKind</a></b></dt><dd>
        
        <p>
          The kind of the element.
        </p>
      </dd><dt class="field"><b>name: String</b></dt><dd>
        
        <p>
          The name of the element. This is typically used as the label in the
          outline.
        </p>
      </dd><dt class="field"><b>location: <a href="#type_Location">Location</a><span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The location of the name in the declaration of the element.
        </p>
      </dd><dt class="field"><b>flags: int</b></dt><dd>
        
        <p>
          A bit-map containing the following flags:
        </p>
        <ul>
          <li>
            0x01 - set if the element is explicitly or implicitly abstract
          </li>
          <li>
            0x02 - set if the element was declared to be 'const'
          </li>
          <li>
            0x04 - set if the element was declared to be 'final'
          </li>
          <li>
            0x08 - set if the element is a static member of a class or is a
            top-level function or field
          </li>
          <li>
            0x10 - set if the element is private
          </li>
          <li>
            0x20 - set if the element is deprecated
          </li>
        </ul>
      </dd><dt class="field"><b>parameters: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The parameter list for the element. If the element is not a method or
          function this field will not be defined. If the element doesn't have
          parameters (e.g. getter), this field will not be defined. If the
          element has zero parameters, this field will have a value of "()".
        </p>
      </dd><dt class="field"><b>returnType: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The return type of the element. If the element is not a method or
          function this field will not be defined. If the element does not have
          a declared return type, this field will contain an empty string.
        </p>
      </dd><dt class="field"><b>typeParameters: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The type parameter list for the element. If the element doesn't have
          type parameters, this field will not be defined.
        </p>
      </dd><dt class="field"><b>aliasedType: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          If the element is a type alias, this field is the aliased type.
          Otherwise this field will not be defined.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_ElementDeclaration">ElementDeclaration: object</a></dt><dd>
    <p>
      A declaration - top-level (class, field, etc) or a class member (method,
      field, etc).
    </p>
    
  <dl><dt class="field"><b>name: String</b></dt><dd>
        
        <p>
          The name of the declaration.
        </p>
      </dd><dt class="field"><b>kind: <a href="#type_ElementKind">ElementKind</a></b></dt><dd>
        
        <p>
          The kind of the element that corresponds to the declaration.
        </p>
      </dd><dt class="field"><b>fileIndex: int</b></dt><dd>
        
        <p>
          The index of the file (in the enclosing response).
        </p>
      </dd><dt class="field"><b>offset: int</b></dt><dd>
        
        <p>
          The offset of the declaration name in the file.
        </p>
      </dd><dt class="field"><b>line: int</b></dt><dd>
        
        <p>
          The one-based index of the line containing the declaration name.
        </p>
      </dd><dt class="field"><b>column: int</b></dt><dd>
        
        <p>
          The one-based index of the column containing the declaration name.
        </p>
      </dd><dt class="field"><b>codeOffset: int</b></dt><dd>
        
        <p>
          The offset of the first character of the declaration code in the file.
        </p>
      </dd><dt class="field"><b>codeLength: int</b></dt><dd>
        
        <p>
          The length of the declaration code in the file.
        </p>
      </dd><dt class="field"><b>className: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The name of the class enclosing this declaration. If the declaration
          is not a class member, this field will be absent.
        </p>
      </dd><dt class="field"><b>mixinName: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The name of the mixin enclosing this declaration. If the declaration
          is not a mixin member, this field will be absent.
        </p>
      </dd><dt class="field"><b>parameters: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The parameter list for the element. If the element is not a method or
          function this field will not be defined. If the element doesn't have
          parameters (e.g. getter), this field will not be defined. If the
          element has zero parameters, this field will have a value of "()".

          The value should not be treated as exact presentation of parameters,
          it is just approximation of parameters to give the user general idea.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_ElementKind">ElementKind: String</a></dt><dd>
    <p>
      An enumeration of the kinds of elements.
    </p>
    
  <dl><dt class="value">CLASS</dt><dt class="value">CLASS_TYPE_ALIAS</dt><dt class="value">COMPILATION_UNIT</dt><dt class="value">CONSTRUCTOR</dt><dt class="value">CONSTRUCTOR_INVOCATION</dt><dt class="value">ENUM</dt><dt class="value">ENUM_CONSTANT</dt><dt class="value">EXTENSION</dt><dt class="value">EXTENSION_TYPE</dt><dt class="value">FIELD</dt><dt class="value">FILE</dt><dt class="value">FUNCTION</dt><dt class="value">FUNCTION_INVOCATION</dt><dt class="value">FUNCTION_TYPE_ALIAS</dt><dt class="value">GETTER</dt><dt class="value">LABEL</dt><dt class="value">LIBRARY</dt><dt class="value">LOCAL_VARIABLE</dt><dt class="value">METHOD</dt><dt class="value">MIXIN</dt><dt class="value">PARAMETER</dt><dt class="value">PREFIX</dt><dt class="value">SETTER</dt><dt class="value">TOP_LEVEL_VARIABLE</dt><dt class="value">TYPE_ALIAS</dt><dt class="value">TYPE_PARAMETER</dt><dt class="value">UNIT_TEST_GROUP</dt><dt class="value">UNIT_TEST_TEST</dt><dt class="value">UNKNOWN</dt></dl></dd><dt class="typeDefinition"><a name="type_ExecutableFile">ExecutableFile: object</a></dt><dd>
    <p>
      A description of an executable file.
    </p>
    
  <dl><dt class="field"><b>file: <a href="#type_FilePath">FilePath</a></b></dt><dd>
        
        <p>
          The path of the executable file.
        </p>
      </dd><dt class="field"><b>kind: <a href="#type_ExecutableKind">ExecutableKind</a></b></dt><dd>
        
        <p>
          The kind of the executable file.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_ExecutableKind">ExecutableKind: String</a></dt><dd>
    <p>
      An enumeration of the kinds of executable files.
    </p>
    
  <dl><dt class="value">CLIENT</dt><dt class="value">EITHER</dt><dt class="value">NOT_EXECUTABLE</dt><dt class="value">SERVER</dt></dl></dd><dt class="typeDefinition"><a name="type_ExecutionContextId">ExecutionContextId: String</a></dt><dd>
    
    <p>
      The identifier for a execution context.
    </p>
  </dd><dt class="typeDefinition"><a name="type_ExecutionService">ExecutionService: String</a></dt><dd>
    <p>
      An enumeration of the services provided by the execution
      domain.
    </p>
    
  <dl><dt class="value">LAUNCH_DATA</dt></dl></dd><dt class="typeDefinition"><a name="type_ExistingImport">ExistingImport: object</a></dt><dd>
    <p>
      Information about an existing import, with elements that it provides.
    </p>
    
  <dl><dt class="field"><b>uri: int</b></dt><dd>
        
        <p>
          The URI of the imported library.
          It is an index in the <tt>strings</tt> field, in the enclosing
          <tt>ExistingImports</tt> and its <tt>ImportedElementSet</tt> object.
        </p>
      </dd><dt class="field"><b>elements: List&lt;int&gt;</b></dt><dd>
        
        <p>
          The list of indexes of elements, in the enclosing
          <tt>ExistingImports</tt> object.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_ExistingImports">ExistingImports: object</a></dt><dd>
    <p>
      Information about all existing imports in a library.
    </p>
    
  <dl><dt class="field"><b>elements: <a href="#type_ImportedElementSet">ImportedElementSet</a></b></dt><dd>
        
        <p>
          The set of all unique imported elements for all imports.
        </p>
      </dd><dt class="field"><b>imports: List&lt;<a href="#type_ExistingImport">ExistingImport</a>&gt;</b></dt><dd>
        
        <p>
          The list of imports in the library.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_FileKind">FileKind: String</a></dt><dd>
    <p>
      An enumeration of the kinds of files.
    </p>
    
  <dl><dt class="value">LIBRARY</dt><dt class="value">PART</dt></dl></dd><dt class="typeDefinition"><a name="type_FilePath">FilePath: String</a></dt><dd>
    
    <p>
      The absolute, normalized path of a file.
    </p>
    <p>
      If the format of a file path in a request is not valid, e.g. the path is
      not absolute or is not normalized, then an error of type
      <tt>INVALID_FILE_PATH_FORMAT</tt> will be generated.
    </p>
  </dd><dt class="typeDefinition"><a name="type_FlutterOutline">FlutterOutline: object</a></dt><dd>
    <p>
      An node in the Flutter specific outline structure of a file.
    </p>
    
  <dl><dt class="field"><b>kind: <a href="#type_FlutterOutlineKind">FlutterOutlineKind</a></b></dt><dd>
        
        <p>The kind of the node.</p>
      </dd><dt class="field"><b>offset: int</b></dt><dd>
        
        <p>
          The offset of the first character of the element. This is different
          than the offset in the Element, which is the offset of the name of the
          element. It can be used, for example, to map locations in the file
          back to an outline.
        </p>
      </dd><dt class="field"><b>length: int</b></dt><dd>
        
        <p>
          The length of the element.
        </p>
      </dd><dt class="field"><b>codeOffset: int</b></dt><dd>
        
        <p>
          The offset of the first character of the element code, which is
          neither documentation, nor annotation.
        </p>
      </dd><dt class="field"><b>codeLength: int</b></dt><dd>
        
        <p>
          The length of the element code.
        </p>
      </dd><dt class="field"><b>label: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The text label of the node children of the node.
          It is provided for any FlutterOutlineKind.GENERIC node,
          where better information is not available.
        </p>
      </dd><dt class="field"><b>dartElement: <a href="#type_Element">Element</a><span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          If this node is a Dart element, the description of it; omitted
          otherwise.
        </p>
      </dd><dt class="field"><b>attributes: List&lt;<a href="#type_FlutterOutlineAttribute">FlutterOutlineAttribute</a>&gt;<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          Additional attributes for this node, which might be interesting
          to display on the client. These attributes are usually arguments
          for the instance creation or the invocation that created the widget.
        </p>
      </dd><dt class="field"><b>className: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          If the node creates a new class instance, or a reference to an
          instance, this field has the name of the class.
        </p>
      </dd><dt class="field"><b>parentAssociationLabel: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          A short text description how this node is associated with the parent
          node. For example "appBar" or "body" in Scaffold.
        </p>
      </dd><dt class="field"><b>variableName: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          If FlutterOutlineKind.VARIABLE, the name of the variable.
        </p>
      </dd><dt class="field"><b>children: List&lt;<a href="#type_FlutterOutline">FlutterOutline</a>&gt;<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The children of the node. The field will be omitted if the node has no
          children.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_FlutterOutlineAttribute">FlutterOutlineAttribute: object</a></dt><dd>
    <p>
      An attribute for a FlutterOutline.
    </p>
    
  <dl><dt class="field"><b>name: String</b></dt><dd>
        
        <p>
          The name of the attribute.
        </p>
      </dd><dt class="field"><b>label: String</b></dt><dd>
        
        <p>
          The label of the attribute value, usually the Dart code.
          It might be quite long, the client should abbreviate as needed.
        </p>
      </dd><dt class="field"><b>literalValueBoolean: bool<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The boolean literal value of the attribute.
          This field is absent if the value is not a boolean literal.
        </p>
      </dd><dt class="field"><b>literalValueInteger: int<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The integer literal value of the attribute.
          This field is absent if the value is not an integer literal.
        </p>
      </dd><dt class="field"><b>literalValueString: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The string literal value of the attribute.
          This field is absent if the value is not a string literal.
        </p>
      </dd><dt class="field"><b>nameLocation: <a href="#type_Location">Location</a><span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          If the attribute is a named argument, the location of the name,
          without the colon.
        </p>
      </dd><dt class="field"><b>valueLocation: <a href="#type_Location">Location</a><span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The location of the value.
        </p>
        <p>
          This field is always available, but marked optional for backward
          compatibility between new clients with older servers.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_FlutterOutlineKind">FlutterOutlineKind: String</a></dt><dd>
    <p>
      An enumeration of the kinds of FlutterOutline elements. The list of kinds
      might be expanded with time, clients must be able to handle new kinds
      in some general way.
    </p>
    
  <dl><dt class="value">DART_ELEMENT</dt><dd>
        
        <p>A dart element declaration.</p>
      </dd><dt class="value">GENERIC</dt><dd>
        
        <p>A generic Flutter element, without additional information.</p>
      </dd><dt class="value">NEW_INSTANCE</dt><dd>
        
        <p>A new instance creation.</p>
      </dd><dt class="value">INVOCATION</dt><dd>
        
        <p>An invocation of a method, a top-level function, a function
          expression, etc.</p>
      </dd><dt class="value">VARIABLE</dt><dd>
        
        <p>A reference to a local variable, or a field.</p>
      </dd><dt class="value">PLACEHOLDER</dt><dd>
        
        <p>The parent node has a required Widget. The node works as a
          placeholder child to drop a new Widget to.</p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_FlutterService">FlutterService: String</a></dt><dd>
    <p>
      An enumeration of the services provided by the flutter domain that
      are related to a specific list of files.
    </p>
    
  <dl><dt class="value">OUTLINE</dt></dl></dd><dt class="typeDefinition"><a name="type_FlutterWidgetProperty">FlutterWidgetProperty: object</a></dt><dd>
    <p>
      A property of a Flutter widget.
    </p>
    
  <dl><dt class="field"><b>documentation: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The documentation of the property to show to the user. Omitted if
          the server does not know the documentation, e.g. because the
          corresponding field is not documented.
        </p>
      </dd><dt class="field"><b>expression: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          If the value of this property is set, the Dart code of the expression
          of this property.
        </p>
      </dd><dt class="field"><b>id: int</b></dt><dd>
        
        <p>
          The unique identifier of the property, must be passed back to the
          server when updating the property value. Identifiers become invalid
          on any source code change.
        </p>
      </dd><dt class="field"><b>isRequired: bool</b></dt><dd>
        
        <p>
          True if the property is required, e.g. because it corresponds to
          a required parameter of a constructor.
        </p>
      </dd><dt class="field"><b>isSafeToUpdate: bool</b></dt><dd>
        
        <p>
          If the property expression is a concrete value (e.g. a literal, or
          an enum constant), then it is safe to replace the expression with
          another concrete value. In this case this field is true. Otherwise,
          for example when the expression is a reference to a field, so that
          its value is provided from outside, this field is false.
        </p>
      </dd><dt class="field"><b>name: String</b></dt><dd>
        
        <p>The name of the property to display to the user.</p>
      </dd><dt class="field"><b>children: List&lt;<a href="#type_FlutterWidgetProperty">FlutterWidgetProperty</a>&gt;<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The list of children properties, if any. For example any property of
          type <tt>EdgeInsets</tt> will have four children properties of type
          <tt>double</tt> - left / top / right / bottom.
        </p>
      </dd><dt class="field"><b>editor: <a href="#type_FlutterWidgetPropertyEditor">FlutterWidgetPropertyEditor</a><span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The editor that should be used by the client. This field is omitted
          if the server does not know the editor for this property, for example
          because it does not have one of the supported types.
        </p>
      </dd><dt class="field"><b>value: <a href="#type_FlutterWidgetPropertyValue">FlutterWidgetPropertyValue</a><span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          If the expression is set, and the server knows the value of the
          expression, this field is set.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_FlutterWidgetPropertyEditor">FlutterWidgetPropertyEditor: object</a></dt><dd>
    <p>
      An editor for a property of a Flutter widget.
    </p>
    
  <dl><dt class="field"><b>kind: <a href="#type_FlutterWidgetPropertyEditorKind">FlutterWidgetPropertyEditorKind</a></b></dt><dd>
        
      </dd><dt class="field"><b>enumItems: List&lt;<a href="#type_FlutterWidgetPropertyValueEnumItem">FlutterWidgetPropertyValueEnumItem</a>&gt;<span style="color:#999999"> (optional)</span></b></dt><dd>
        
      </dd></dl></dd><dt class="typeDefinition"><a name="type_FlutterWidgetPropertyEditorKind">FlutterWidgetPropertyEditorKind: String</a></dt><dd>
    <p>
      An enumeration of the kinds of property editors.
    </p>
    
  <dl><dt class="value">BOOL</dt><dd>
        
        <p>
          The editor for a property of type <tt>bool</tt>.
        </p>
      </dd><dt class="value">DOUBLE</dt><dd>
        
        <p>
          The editor for a property of the type <tt>double</tt>.
        </p>
      </dd><dt class="value">ENUM</dt><dd>
        
        <p>
          The editor for choosing an item of an enumeration, see the
          <tt>enumItems</tt> field of <tt>FlutterWidgetPropertyEditor</tt>.
        </p>
      </dd><dt class="value">ENUM_LIKE</dt><dd>
        
        <p>
          The editor for either choosing a pre-defined item from a list of
          provided static field references (like <tt>ENUM</tt>), or specifying
          a free-form expression.
        </p>
      </dd><dt class="value">INT</dt><dd>
        
        <p>
          The editor for a property of type <tt>int</tt>.
        </p>
      </dd><dt class="value">STRING</dt><dd>
        
        <p>
          The editor for a property of the type <tt>String</tt>.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_FlutterWidgetPropertyValue">FlutterWidgetPropertyValue: object</a></dt><dd>
    <p>
      A value of a property of a Flutter widget.
    </p>
    
  <dl><dt class="field"><b>boolValue: bool<span style="color:#999999"> (optional)</span></b></dt><dd>
        
      </dd><dt class="field"><b>doubleValue: double<span style="color:#999999"> (optional)</span></b></dt><dd>
        
      </dd><dt class="field"><b>intValue: int<span style="color:#999999"> (optional)</span></b></dt><dd>
        
      </dd><dt class="field"><b>stringValue: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
      </dd><dt class="field"><b>enumValue: <a href="#type_FlutterWidgetPropertyValueEnumItem">FlutterWidgetPropertyValueEnumItem</a><span style="color:#999999"> (optional)</span></b></dt><dd>
        
      </dd><dt class="field"><b>expression: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          A free-form expression, which will be used as the value as is.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_FlutterWidgetPropertyValueEnumItem">FlutterWidgetPropertyValueEnumItem: object</a></dt><dd>
    <p>
      An item of an enumeration in a general sense - actual <tt>enum</tt>
      value, or a static field in a class.
    </p>
    
  <dl><dt class="field"><b>libraryUri: String</b></dt><dd>
        
        <p>
          The URI of the library containing the <tt>className</tt>. When the
          enum item is passed back, this will allow the server to import the
          corresponding library if necessary.
        </p>
      </dd><dt class="field"><b>className: String</b></dt><dd>
        
        <p>
          The name of the class or enum.
        </p>
      </dd><dt class="field"><b>name: String</b></dt><dd>
        
        <p>
          The name of the field in the enumeration, or the static field in the
          class.
        </p>
      </dd><dt class="field"><b>documentation: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The documentation to show to the user. Omitted if the server does not
          know the documentation, e.g. because the corresponding field is not
          documented.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_FoldingKind">FoldingKind: String</a></dt><dd>
    <p>
      An enumeration of the kinds of folding regions.
    </p>
    
  <dl><dt class="value">ANNOTATIONS</dt><dt class="value">BLOCK</dt><dt class="value">CLASS_BODY</dt><dt class="value">COMMENT</dt><dt class="value">DIRECTIVES</dt><dt class="value">DOCUMENTATION_COMMENT</dt><dt class="value">FILE_HEADER</dt><dt class="value">FUNCTION_BODY</dt><dt class="value">INVOCATION</dt><dt class="value">LITERAL</dt><dt class="value">PARAMETERS</dt></dl></dd><dt class="typeDefinition"><a name="type_FoldingRegion">FoldingRegion: object</a></dt><dd>
    <p>
      A description of a region that can be folded.
    </p>
    
  <dl><dt class="field"><b>kind: <a href="#type_FoldingKind">FoldingKind</a></b></dt><dd>
        
        <p>
          The kind of the region.
        </p>
      </dd><dt class="field"><b>offset: int</b></dt><dd>
        
        <p>
          The offset of the region to be folded.
        </p>
      </dd><dt class="field"><b>length: int</b></dt><dd>
        
        <p>
          The length of the region to be folded.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_GeneralAnalysisService">GeneralAnalysisService: String</a></dt><dd>
    <p>
      An enumeration of the services provided by the analysis domain that are
      general in nature (that is, are not specific to some list of files).
    </p>
    
  <dl><dt class="value">ANALYZED_FILES</dt></dl></dd><dt class="typeDefinition"><a name="type_HighlightRegion">HighlightRegion: object</a></dt><dd>
    <p>
      A description of a region that could have special highlighting associated
      with it.
    </p>
    
  <dl><dt class="field"><b>type: <a href="#type_HighlightRegionType">HighlightRegionType</a></b></dt><dd>
        
        <p>
          The type of highlight associated with the region.
        </p>
      </dd><dt class="field"><b>offset: int</b></dt><dd>
        
        <p>
          The offset of the region to be highlighted.
        </p>
      </dd><dt class="field"><b>length: int</b></dt><dd>
        
        <p>
          The length of the region to be highlighted.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_HighlightRegionType">HighlightRegionType: String</a></dt><dd>
    <p>
      An enumeration of the kinds of highlighting that can be applied to files.
    </p>
    
  <dl><dt class="value">ANNOTATION</dt><dt class="value">BUILT_IN</dt><dt class="value">CLASS</dt><dt class="value">COMMENT_BLOCK</dt><dt class="value">COMMENT_DOCUMENTATION</dt><dt class="value">COMMENT_END_OF_LINE</dt><dt class="value">CONSTRUCTOR</dt><dt class="value">CONSTRUCTOR_TEAR_OFF</dt><dt class="value">DIRECTIVE</dt><dt class="value">DYNAMIC_TYPE</dt><dd>
        
        <p>Deprecated - no longer sent.</p>
      </dd><dt class="value">DYNAMIC_LOCAL_VARIABLE_DECLARATION</dt><dt class="value">DYNAMIC_LOCAL_VARIABLE_REFERENCE</dt><dt class="value">DYNAMIC_PARAMETER_DECLARATION</dt><dt class="value">DYNAMIC_PARAMETER_REFERENCE</dt><dt class="value">ENUM</dt><dt class="value">ENUM_CONSTANT</dt><dt class="value">EXTENSION</dt><dt class="value">EXTENSION_TYPE</dt><dt class="value">FIELD</dt><dd>
        
        <p>Deprecated - no longer sent.</p>
      </dd><dt class="value">FIELD_STATIC</dt><dd>
        
        <p>Deprecated - no longer sent.</p>
      </dd><dt class="value">FUNCTION</dt><dd>
        
        <p>Deprecated - no longer sent.</p>
      </dd><dt class="value">FUNCTION_DECLARATION</dt><dd>
        
        <p>Deprecated - no longer sent.</p>
      </dd><dt class="value">FUNCTION_TYPE_ALIAS</dt><dt class="value">GETTER_DECLARATION</dt><dd>
        
        <p>Deprecated - no longer sent.</p>
      </dd><dt class="value">IDENTIFIER_DEFAULT</dt><dt class="value">IMPORT_PREFIX</dt><dt class="value">INSTANCE_FIELD_DECLARATION</dt><dt class="value">INSTANCE_FIELD_REFERENCE</dt><dt class="value">INSTANCE_GETTER_DECLARATION</dt><dt class="value">INSTANCE_GETTER_REFERENCE</dt><dt class="value">INSTANCE_METHOD_DECLARATION</dt><dt class="value">INSTANCE_METHOD_REFERENCE</dt><dt class="value">INSTANCE_METHOD_TEAR_OFF</dt><dt class="value">INSTANCE_SETTER_DECLARATION</dt><dt class="value">INSTANCE_SETTER_REFERENCE</dt><dt class="value">INVALID_STRING_ESCAPE</dt><dt class="value">KEYWORD</dt><dt class="value">LABEL</dt><dt class="value">LIBRARY_NAME</dt><dt class="value">LITERAL_BOOLEAN</dt><dt class="value">LITERAL_DOUBLE</dt><dt class="value">LITERAL_INTEGER</dt><dt class="value">LITERAL_LIST</dt><dt class="value">LITERAL_MAP</dt><dt class="value">LITERAL_RECORD</dt><dt class="value">LITERAL_STRING</dt><dt class="value">LOCAL_FUNCTION_DECLARATION</dt><dt class="value">LOCAL_FUNCTION_REFERENCE</dt><dt class="value">LOCAL_FUNCTION_TEAR_OFF</dt><dt class="value">LOCAL_VARIABLE</dt><dd>
        
        <p>Deprecated - no longer sent.</p>
      </dd><dt class="value">LOCAL_VARIABLE_DECLARATION</dt><dt class="value">LOCAL_VARIABLE_REFERENCE</dt><dt class="value">METHOD</dt><dd>
        
        <p>Deprecated - no longer sent.</p>
      </dd><dt class="value">METHOD_DECLARATION</dt><dd>
        
        <p>Deprecated - no longer sent.</p>
      </dd><dt class="value">METHOD_DECLARATION_STATIC</dt><dd>
        
        <p>Deprecated - no longer sent.</p>
      </dd><dt class="value">METHOD_STATIC</dt><dd>
        
        <p>Deprecated - no longer sent.</p>
      </dd><dt class="value">MIXIN</dt><dt class="value">PARAMETER</dt><dd>
        
        <p>Deprecated - no longer sent.</p>
      </dd><dt class="value">SETTER_DECLARATION</dt><dd>
        
        <p>Deprecated - no longer sent.</p>
      </dd><dt class="value">TOP_LEVEL_VARIABLE</dt><dd>
        
        <p>Deprecated - no longer sent.</p>
      </dd><dt class="value">PARAMETER_DECLARATION</dt><dt class="value">PARAMETER_REFERENCE</dt><dt class="value">STATIC_FIELD_DECLARATION</dt><dt class="value">STATIC_GETTER_DECLARATION</dt><dt class="value">STATIC_GETTER_REFERENCE</dt><dt class="value">STATIC_METHOD_DECLARATION</dt><dt class="value">STATIC_METHOD_REFERENCE</dt><dt class="value">STATIC_METHOD_TEAR_OFF</dt><dt class="value">STATIC_SETTER_DECLARATION</dt><dt class="value">STATIC_SETTER_REFERENCE</dt><dt class="value">TOP_LEVEL_FUNCTION_DECLARATION</dt><dt class="value">TOP_LEVEL_FUNCTION_REFERENCE</dt><dt class="value">TOP_LEVEL_FUNCTION_TEAR_OFF</dt><dt class="value">TOP_LEVEL_GETTER_DECLARATION</dt><dt class="value">TOP_LEVEL_GETTER_REFERENCE</dt><dt class="value">TOP_LEVEL_SETTER_DECLARATION</dt><dt class="value">TOP_LEVEL_SETTER_REFERENCE</dt><dt class="value">TOP_LEVEL_VARIABLE_DECLARATION</dt><dt class="value">TYPE_ALIAS</dt><dt class="value">TYPE_NAME_DYNAMIC</dt><dt class="value">TYPE_PARAMETER</dt><dt class="value">UNRESOLVED_INSTANCE_MEMBER_REFERENCE</dt><dt class="value">VALID_STRING_ESCAPE</dt></dl></dd><dt class="typeDefinition"><a name="type_HoverInformation">HoverInformation: object</a></dt><dd>
    <p>
      The hover information associated with a specific location.
    </p>
    
  <dl><dt class="field"><b>offset: int</b></dt><dd>
        
        <p>
          The offset of the range of characters that encompasses the
          cursor position and has the same hover information as the
          cursor position.
        </p>
      </dd><dt class="field"><b>length: int</b></dt><dd>
        
        <p>
          The length of the range of characters that encompasses the
          cursor position and has the same hover information as the
          cursor position.
        </p>
      </dd><dt class="field"><b>containingLibraryPath: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The path to the defining compilation unit of the library
          in which the referenced element is declared. This data is
          omitted if there is no referenced element, or if the
          element is declared inside an HTML file.
        </p>
      </dd><dt class="field"><b>containingLibraryName: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The URI of the containing library, examples here include
          "dart:core", "package:.." and file uris represented by the
          path on disk, "/..". The data is omitted if the element is
          declared inside an HTML file.
        </p>
      </dd><dt class="field"><b>containingClassDescription: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          A human-readable description of the class declaring the element
          being referenced. This data is omitted if there is no referenced
          element, or if the element is not a class member.
        </p>
      </dd><dt class="field"><b>dartdoc: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The dartdoc associated with the referenced element. Other
          than the removal of the comment delimiters, including
          leading asterisks in the case of a block comment, the
          dartdoc is unprocessed markdown. This data is omitted if
          there is no referenced element, or if the element has no
          dartdoc.
        </p>
      </dd><dt class="field"><b>elementDescription: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          A human-readable description of the element being
          referenced. This data is omitted if there is no referenced
          element.
        </p>
      </dd><dt class="field"><b>elementKind: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          A human-readable description of the kind of element being
          referenced (such as "class" or "function type
          alias"). This data is omitted if there is no referenced
          element.
        </p>
      </dd><dt class="field"><b>isDeprecated: bool<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          True if the referenced element is deprecated.
        </p>
      </dd><dt class="field"><b>parameter: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          A human-readable description of the parameter
          corresponding to the expression being hovered over. This
          data is omitted if the location is not in an argument to a
          function.
        </p>
      </dd><dt class="field"><b>propagatedType: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The name of the propagated type of the expression. This
          data is omitted if the location does not correspond to an
          expression or if there is no propagated type information.
        </p>
      </dd><dt class="field"><b>staticType: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The name of the static type of the expression. This data
          is omitted if the location does not correspond to an
          expression.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_ImplementedClass">ImplementedClass: object</a></dt><dd>
    <p>
      A description of a class that is implemented or extended.
    </p>
    
  <dl><dt class="field"><b>offset: int</b></dt><dd>
        
        <p>
          The offset of the name of the implemented class.
        </p>
      </dd><dt class="field"><b>length: int</b></dt><dd>
        
        <p>
          The length of the name of the implemented class.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_ImplementedMember">ImplementedMember: object</a></dt><dd>
    <p>
      A description of a class member that is implemented or overridden.
    </p>
    
  <dl><dt class="field"><b>offset: int</b></dt><dd>
        
        <p>
          The offset of the name of the implemented member.
        </p>
      </dd><dt class="field"><b>length: int</b></dt><dd>
        
        <p>
          The length of the name of the implemented member.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_ImportedElementSet">ImportedElementSet: object</a></dt><dd>
    <p>
      The set of top-level elements encoded as pairs of the defining library
      URI and the name, and stored in the parallel lists <tt>elementUris</tt>
      and <tt>elementNames</tt>.
    </p>
    
  <dl><dt class="field"><b>strings: List&lt;String&gt;</b></dt><dd>
        
        <p>
          The list of unique strings in this object.
        </p>
      </dd><dt class="field"><b>uris: List&lt;int&gt;</b></dt><dd>
        
        <p>
          The library URI part of the element.
          It is an index in the <tt>strings</tt> field.
        </p>
      </dd><dt class="field"><b>names: List&lt;int&gt;</b></dt><dd>
        
        <p>
          The name part of a the element.
          It is an index in the <tt>strings</tt> field.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_ImportedElements">ImportedElements: object</a></dt><dd>
    <p>
      A description of the elements that are referenced in a region of a file
      that come from a single imported library.
    </p>
    
  <dl><dt class="field"><b>path: <a href="#type_FilePath">FilePath</a></b></dt><dd>
        
        <p>
          The absolute and normalized path of the file containing the library.
        </p>
      </dd><dt class="field"><b>prefix: String</b></dt><dd>
        
        <p>
          The prefix that was used when importing the library into the original
          source.
        </p>
      </dd><dt class="field"><b>elements: List&lt;String&gt;</b></dt><dd>
        
        <p>
          The names of the elements imported from the library.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_LibraryPathSet">LibraryPathSet: object</a></dt><dd>
    <p>
      A list of associations between paths and the libraries that should be
      included for code completion when editing a file beneath that path.
    </p>
    
  <dl><dt class="field"><b>scope: <a href="#type_FilePath">FilePath</a></b></dt><dd>
        
        <p>
          The filepath for which this request's libraries should be active
          in completion suggestions. This object associates filesystem regions
          to libraries and library directories of interest to the client.
        </p>
      </dd><dt class="field"><b>libraryPaths: List&lt;<a href="#type_FilePath">FilePath</a>&gt;</b></dt><dd>
        
        <p>
          The paths of the libraries of interest to the client for completion suggestions.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_LinkedEditGroup">LinkedEditGroup: object</a></dt><dd>
    <p>
      A collection of positions that should be linked (edited simultaneously)
      for the purposes of updating code after a source change. For example, if a
      set of edits introduced a new variable name, the group would contain all
      of the positions of the variable name so that if the client wanted to let
      the user edit the variable name after the operation, all occurrences of
      the name could be edited simultaneously.
    </p>
    <p>
      Edit groups may have a length of 0 and function as tabstops where there
      is no default text, for example, an edit that inserts an <tt>if</tt>
      statement might provide an empty group between parens where a condition
      should be typed. For this reason, it's also valid for a group to contain
      only a single position that is not linked to others.
    </p>
    
  <dl><dt class="field"><b>positions: List&lt;<a href="#type_Position">Position</a>&gt;</b></dt><dd>
        
        <p>
          The positions of the regions (after applying the relevant edits) that
          should be edited simultaneously.
        </p>
      </dd><dt class="field"><b>length: int</b></dt><dd>
        
        <p>
          The length of the regions that should be edited simultaneously.
        </p>
      </dd><dt class="field"><b>suggestions: List&lt;<a href="#type_LinkedEditSuggestion">LinkedEditSuggestion</a>&gt;</b></dt><dd>
        
        <p>
          Pre-computed suggestions for what every region might want to be
          changed to.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_LinkedEditSuggestion">LinkedEditSuggestion: object</a></dt><dd>
    <p>
      A suggestion of a value that could be used to replace all of the linked
      edit regions in a <a href="#type_LinkedEditGroup">LinkedEditGroup</a>.
    </p>
    
  <dl><dt class="field"><b>value: String</b></dt><dd>
        
        <p>
          The value that could be used to replace all of the linked edit
          regions.
        </p>
      </dd><dt class="field"><b>kind: <a href="#type_LinkedEditSuggestionKind">LinkedEditSuggestionKind</a></b></dt><dd>
        
        <p>
          The kind of value being proposed.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_LinkedEditSuggestionKind">LinkedEditSuggestionKind: String</a></dt><dd>
    <p>
      An enumeration of the kind of values that can be suggested for a linked
      edit.
    </p>
    
  <dl><dt class="value">METHOD</dt><dt class="value">PARAMETER</dt><dt class="value">TYPE</dt><dt class="value">VARIABLE</dt></dl></dd><dt class="typeDefinition"><a name="type_Location">Location: object</a></dt><dd>
    <p>
      A location (character range) within a file.
    </p>
    
  <dl><dt class="field"><b>file: <a href="#type_FilePath">FilePath</a></b></dt><dd>
        
        <p>
          The file containing the range.
        </p>
      </dd><dt class="field"><b>offset: int</b></dt><dd>
        
        <p>
          The offset of the range.
        </p>
      </dd><dt class="field"><b>length: int</b></dt><dd>
        
        <p>
          The length of the range.
        </p>
      </dd><dt class="field"><b>startLine: int</b></dt><dd>
        
        <p>
          The one-based index of the line containing the first character of the
          range.
        </p>
      </dd><dt class="field"><b>startColumn: int</b></dt><dd>
        
        <p>
          The one-based index of the column containing the first character of
          the range.
        </p>
      </dd><dt class="field"><b>endLine: int<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The one-based index of the line containing the character immediately
          following the range.
        </p>
      </dd><dt class="field"><b>endColumn: int<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The one-based index of the column containing the character immediately
          following the range.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_MessageAction">MessageAction: object</a></dt><dd>
    <p>
      An action associated with a message that the server is requesting the
      client to display to the user.
    </p>
    
  <dl><dt class="field"><b>label: String</b></dt><dd>
        
        <p>
          The label of the button to be displayed, and the value to be returned
          to the server if the button is clicked.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_MessageType">MessageType: String</a></dt><dd>
    <p>
      The type of a message that the server is requesting the client to display
      to the user. The type can be used by the client to control the way in
      which the message is displayed.
    </p>
    
  <dl><dt class="value">ERROR</dt><dd>
        
        <p>
          The message is an error message.
        </p>
      </dd><dt class="value">WARNING</dt><dd>
        
        <p>
          The message is a warning message.
        </p>
      </dd><dt class="value">INFO</dt><dd>
        
        <p>
          The message is an informational message.
        </p>
      </dd><dt class="value">LOG</dt><dd>
        
        <p>
          The message is a log message.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_NavigationRegion">NavigationRegion: object</a></dt><dd>
    <p>
      A description of a region from which the user can navigate to the
      declaration of an element.
    </p>
    
  <dl><dt class="field"><b>offset: int</b></dt><dd>
        
        <p>
          The offset of the region from which the user can navigate.
        </p>
      </dd><dt class="field"><b>length: int</b></dt><dd>
        
        <p>
          The length of the region from which the user can navigate.
        </p>
      </dd><dt class="field"><b>targets: List&lt;int&gt;</b></dt><dd>
        
        <p>
          The indexes of the targets (in the enclosing navigation response) to
          which the given region is bound. By opening the target, clients can
          implement one form of navigation. This list cannot be empty.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_NavigationTarget">NavigationTarget: object</a></dt><dd>
    <p>
      A description of a target to which the user can navigate.
    </p>
    
  <dl><dt class="field"><b>kind: <a href="#type_ElementKind">ElementKind</a></b></dt><dd>
        
        <p>
          The kind of the element.
        </p>
      </dd><dt class="field"><b>fileIndex: int</b></dt><dd>
        
        <p>
          The index of the file (in the enclosing navigation response) to
          navigate to.
        </p>
      </dd><dt class="field"><b>offset: int</b></dt><dd>
        
        <p>
          The offset of the name of the target to which the user can navigate.
        </p>
      </dd><dt class="field"><b>length: int</b></dt><dd>
        
        <p>
          The length of the name of the target to which the user can navigate.
        </p>
      </dd><dt class="field"><b>startLine: int</b></dt><dd>
        
        <p>
          The one-based index of the line containing the first character of the
          name of the target.
        </p>
      </dd><dt class="field"><b>startColumn: int</b></dt><dd>
        
        <p>
          The one-based index of the column containing the first character of
          the name of the target.
        </p>
      </dd><dt class="field"><b>codeOffset: int<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The offset of the target code to which the user can navigate.
        </p>
      </dd><dt class="field"><b>codeLength: int<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The length of the target code to which the user can navigate.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_Occurrences">Occurrences: object</a></dt><dd>
    <p>
      A description of the references to a single element within a single file.
    </p>
    
  <dl><dt class="field"><b>element: <a href="#type_Element">Element</a></b></dt><dd>
        
        <p>
          The element that was referenced.
        </p>
      </dd><dt class="field"><b>offsets: List&lt;int&gt;</b></dt><dd>
        
        <p>
          The offsets of the name of the referenced element within the file.
        </p>
      </dd><dt class="field"><b>length: int</b></dt><dd>
        
        <p>
          The length of the name of the referenced element.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_Outline">Outline: object</a></dt><dd>
    <p>
      An node in the outline structure of a file.
    </p>
    
  <dl><dt class="field"><b>element: <a href="#type_Element">Element</a></b></dt><dd>
        
        <p>
          A description of the element represented by this node.
        </p>
      </dd><dt class="field"><b>offset: int</b></dt><dd>
        
        <p>
          The offset of the first character of the element. This is different
          than the offset in the Element, which is the offset of the name of the
          element. It can be used, for example, to map locations in the file
          back to an outline.
        </p>
      </dd><dt class="field"><b>length: int</b></dt><dd>
        
        <p>
          The length of the element.
        </p>
      </dd><dt class="field"><b>codeOffset: int</b></dt><dd>
        
        <p>
          The offset of the first character of the element code, which is
          neither documentation, nor annotation.
        </p>
      </dd><dt class="field"><b>codeLength: int</b></dt><dd>
        
        <p>
          The length of the element code.
        </p>
      </dd><dt class="field"><b>children: List&lt;<a href="#type_Outline">Outline</a>&gt;<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The children of the node. The field will be omitted if the node has no
          children. Children are sorted by offset.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_OverriddenMember">OverriddenMember: object</a></dt><dd>
    <p>
      A description of a member that is being overridden.
    </p>
    
  <dl><dt class="field"><b>element: <a href="#type_Element">Element</a></b></dt><dd>
        
        <p>
          The element that is being overridden.
        </p>
      </dd><dt class="field"><b>className: String</b></dt><dd>
        
        <p>
          The name of the class in which the member is defined.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_Override">Override: object</a></dt><dd>
    <p>
      A description of a member that overrides an inherited member.
    </p>
    
  <dl><dt class="field"><b>offset: int</b></dt><dd>
        
        <p>
          The offset of the name of the overriding member.
        </p>
      </dd><dt class="field"><b>length: int</b></dt><dd>
        
        <p>
          The length of the name of the overriding member.
        </p>
      </dd><dt class="field"><b>superclassMember: <a href="#type_OverriddenMember">OverriddenMember</a><span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The member inherited from a superclass that is overridden
          by the overriding member. The field is omitted if there is
          no superclass member, in which case there must be at least
          one interface member.
        </p>
      </dd><dt class="field"><b>interfaceMembers: List&lt;<a href="#type_OverriddenMember">OverriddenMember</a>&gt;<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The members inherited from interfaces that are overridden
          by the overriding member. The field is omitted if there
          are no interface members, in which case there must be a
          superclass member.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_Position">Position: object</a></dt><dd>
    <p>
      A position within a file.
    </p>
    
  <dl><dt class="field"><b>file: <a href="#type_FilePath">FilePath</a></b></dt><dd>
        
        <p>
          The file containing the position.
        </p>
      </dd><dt class="field"><b>offset: int</b></dt><dd>
        
        <p>
          The offset of the position.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_PostfixTemplateDescriptor">PostfixTemplateDescriptor: object</a></dt><dd>
    <p>
      The description of a postfix completion template.
    </p>
    
  <dl><dt class="field"><b>name: String</b></dt><dd>
        
        <p>
          The template name, shown in the UI.
        </p>
      </dd><dt class="field"><b>key: String</b></dt><dd>
        
        <p>
          The unique template key, not shown in the UI.
        </p>
      </dd><dt class="field"><b>example: String</b></dt><dd>
        
        <p>
          A short example of the transformation performed when the template is
          applied.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_PubStatus">PubStatus: object</a></dt><dd>
    <p>
      An indication of the current state of pub execution.
    </p>
    
  <dl><dt class="field"><b>isListingPackageDirs: bool</b></dt><dd>
        
        <p>
          True if the server is currently running pub to produce a list of
          package directories.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_RefactoringFeedback">RefactoringFeedback: object</a></dt><dd>
    <p>
      An abstract superclass of all refactoring feedbacks.
    </p>
    
  <dl></dl></dd><dt class="typeDefinition"><a name="type_RefactoringKind">RefactoringKind: String</a></dt><dd>
    <p>
      An enumeration of the kinds of refactorings that can be created.
    </p>
    
  <dl><dt class="value">CONVERT_GETTER_TO_METHOD</dt><dt class="value">CONVERT_METHOD_TO_GETTER</dt><dt class="value">EXTRACT_LOCAL_VARIABLE</dt><dt class="value">EXTRACT_METHOD</dt><dt class="value">EXTRACT_WIDGET</dt><dt class="value">INLINE_LOCAL_VARIABLE</dt><dt class="value">INLINE_METHOD</dt><dt class="value">MOVE_FILE</dt><dt class="value">RENAME</dt></dl></dd><dt class="typeDefinition"><a name="type_RefactoringMethodParameter">RefactoringMethodParameter: object</a></dt><dd>
    
    <p>
      A description of a parameter in a method refactoring.
    </p>
    
  <dl><dt class="field"><b>id: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The unique identifier of the parameter. Clients may omit this field
          for the parameters they want to add.
        </p>
      </dd><dt class="field"><b>kind: <a href="#type_RefactoringMethodParameterKind">RefactoringMethodParameterKind</a></b></dt><dd>
        
        <p>
          The kind of the parameter.
        </p>
      </dd><dt class="field"><b>type: String</b></dt><dd>
        
        <p>
          The type that should be given to the parameter, or the return type of
          the parameter's function type.
        </p>
      </dd><dt class="field"><b>name: String</b></dt><dd>
        
        <p>
          The name that should be given to the parameter.
        </p>
      </dd><dt class="field"><b>parameters: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The parameter list of the parameter's function type. If the parameter
          is not of a function type, this field will not be defined. If the
          function type has zero parameters, this field will have a value of
          '()'.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_RefactoringMethodParameterKind">RefactoringMethodParameterKind: String</a></dt><dd>
    <p>
      An enumeration of the kinds of parameters.
    </p>
    
  <dl><dt class="value">REQUIRED</dt><dt class="value">POSITIONAL</dt><dt class="value">NAMED</dt></dl></dd><dt class="typeDefinition"><a name="type_RefactoringOptions">RefactoringOptions: object</a></dt><dd>
    <p>
      An abstract superclass of all refactoring options.
    </p>
    
  <dl></dl></dd><dt class="typeDefinition"><a name="type_RefactoringProblem">RefactoringProblem: object</a></dt><dd>
    <p>
      A description of a problem related to a refactoring.
    </p>
    
  <dl><dt class="field"><b>severity: <a href="#type_RefactoringProblemSeverity">RefactoringProblemSeverity</a></b></dt><dd>
        
        <p>
          The severity of the problem being represented.
        </p>
      </dd><dt class="field"><b>message: String</b></dt><dd>
        
        <p>
          A human-readable description of the problem being represented.
        </p>
      </dd><dt class="field"><b>location: <a href="#type_Location">Location</a><span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The location of the problem being represented. This field is omitted
          unless there is a specific location associated with the problem (such
          as a location where an element being renamed will be shadowed).
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_RefactoringProblemSeverity">RefactoringProblemSeverity: String</a></dt><dd>
    <p>
      An enumeration of the severities of problems that can be returned by the
      refactoring requests.
    </p>
    
  <dl><dt class="value">INFO</dt><dd>
        
        <p>
          A minor code problem. No example, because it is not used yet.
        </p>
      </dd><dt class="value">WARNING</dt><dd>
        
        <p>
          A minor code problem. For example names of local variables should be
          camel case and start with a lower case letter. Staring the name of a
          variable with an upper case is OK from the language point of view, but
          it is nice to warn the user.
        </p>
      </dd><dt class="value">ERROR</dt><dd>
        
        <p>
          The refactoring technically can be performed, but there is a logical
          problem. For example the name of a local variable being extracted
          conflicts with another name in the scope, or duplicate parameter names
          in the method being extracted, or a conflict between a parameter name
          and a local variable, etc. In some cases the location of the problem
          is also provided, so the IDE can show user the location and the
          problem, and let the user decide whether they want to perform the
          refactoring. For example the name conflict might be expected, and the
          user wants to fix it afterwards.
        </p>
      </dd><dt class="value">FATAL</dt><dd>
        
        <p>
          A fatal error, which prevents performing the refactoring. For example
          the name of a local variable being extracted is not a valid
          identifier, or selection is not a valid expression.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_RemoveContentOverlay">RemoveContentOverlay: object</a></dt><dd>
    <p>
      A directive to remove an existing file content overlay. After processing
      this directive, the file contents will once again be read from the file
      system.
    </p>
    <p>
      If this directive is used on a file that doesn't currently have a content
      overlay, it has no effect.
    </p>
    
  <dl><dt class="field"><b>type = "remove"</b></dt><dd>
        
      </dd></dl></dd><dt class="typeDefinition"><a name="type_RequestError">RequestError: object</a></dt><dd>
    <p>
      An indication of a problem with the execution of the server,
      typically in response to a request.
    </p>
    
  <dl><dt class="field"><b>code: <a href="#type_RequestErrorCode">RequestErrorCode</a></b></dt><dd>
        
        <p>
          A code that uniquely identifies the error that occurred.
        </p>
      </dd><dt class="field"><b>message: String</b></dt><dd>
        
        <p>
          A short description of the error.
        </p>
      </dd><dt class="field"><b>stackTrace: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The stack trace associated with processing the request,
          used for debugging the server.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_RequestErrorCode">RequestErrorCode: String</a></dt><dd>
    <p>
      An enumeration of the types of errors that can occur in the
      execution of the server.
    </p>
    
  <dl><dt class="value">CONTENT_MODIFIED</dt><dd>
        
        <p>
          An "analysis.getErrors" or "analysis.getNavigation" request could
          not be satisfied because the content of the file changed before
          the requested results could be computed.
        </p>
      </dd><dt class="value">DEBUG_PORT_COULD_NOT_BE_OPENED</dt><dd>
        
        <p>
          The server was unable to open a port for the diagnostic server.
        </p>
      </dd><dt class="value">FILE_NOT_ANALYZED</dt><dd>
        
        <p>
          A request specified a FilePath which does not match a file in
          an analysis root, or the requested operation is not available
          for the file.
        </p>
      </dd><dt class="value">FLUTTER_GET_WIDGET_DESCRIPTION_CONTENT_MODIFIED</dt><dd>
        
        <p>
          A file was change while widget descriptions were being computed.
        </p>
      </dd><dt class="value">FLUTTER_GET_WIDGET_DESCRIPTION_NO_WIDGET</dt><dd>
        
        <p>
          The given location does not have a supported widget.
        </p>
      </dd><dt class="value">FLUTTER_SET_WIDGET_PROPERTY_VALUE_INVALID_EXPRESSION</dt><dd>
        
        <p>
          The given property expression is invalid, e.g. has a syntax error.
        </p>
      </dd><dt class="value">FLUTTER_SET_WIDGET_PROPERTY_VALUE_INVALID_ID</dt><dd>
        
        <p>
          The given property identifier is not valid. It might have never been
          valid, or a change to code invalidated it, or its TTL was exceeded.
        </p>
      </dd><dt class="value">FLUTTER_SET_WIDGET_PROPERTY_VALUE_IS_REQUIRED</dt><dd>
        
        <p>
          The value of the property cannot be removed, for example because
          the corresponding constructor argument is required, and the server
          does not know what default value to use.
        </p>
      </dd><dt class="value">FORMAT_INVALID_FILE</dt><dd>
        
        <p>
          An "edit.format" request specified a FilePath
          which does not match a Dart file in an analysis root.
        </p>
      </dd><dt class="value">FORMAT_WITH_ERRORS</dt><dd>
        
        <p>
          An "edit.format" request specified a file that contains syntax
          errors.
        </p>
      </dd><dt class="value">GET_ERRORS_INVALID_FILE</dt><dd>
        
        <p>
          An "analysis.getErrors" request specified a FilePath
          which does not match a file currently subject to
          analysis.
        </p>
      </dd><dt class="value">GET_FIXES_INVALID_FILE</dt><dd>
        
        <p>
          An "edit.getFixes" request specified a FilePath
          which does not match a file currently subject to
          analysis.
        </p>
      </dd><dt class="value">GET_IMPORTED_ELEMENTS_INVALID_FILE</dt><dd>
        
        <p>
          An "analysis.getImportedElements" request specified a FilePath that
          does not match a file currently subject to analysis.
        </p>
      </dd><dt class="value">GET_NAVIGATION_INVALID_FILE</dt><dd>
        
        <p>
          An "analysis.getNavigation" request specified a FilePath
          which does not match a file currently subject to
          analysis.
        </p>
      </dd><dt class="value">GET_REACHABLE_SOURCES_INVALID_FILE</dt><dd>
        
        <p>
          An "analysis.getReachableSources" request specified a FilePath
          which does not match a file currently subject to
          analysis.
        </p>
      </dd><dt class="value">GET_SIGNATURE_INVALID_FILE</dt><dd>
        
        <p>
          An "analysis.getSignature" request specified a FilePath
          which does not match a file currently subject to
          analysis.
        </p>
      </dd><dt class="value">GET_SIGNATURE_INVALID_OFFSET</dt><dd>
        
        <p>
          An "analysis.getSignature" request specified an offset
          which is not a valid location within for the contents of
          the file specified FilePath.
        </p>
      </dd><dt class="value">GET_SIGNATURE_UNKNOWN_FUNCTION</dt><dd>
        
        <p>
          An "analysis.getSignature" request specified an offset
          that could not be matched to a function call.
        </p>
      </dd><dt class="value">IMPORT_ELEMENTS_INVALID_FILE</dt><dd>
        
        <p>
          An "edit.importElements" request specified a FilePath that does not
          match a file currently subject to analysis.
        </p>
      </dd><dt class="value">INVALID_ANALYSIS_ROOT</dt><dd>
        
        <p>
          A path passed as an argument to a request (such as
          analysis.reanalyze) is required to be an analysis root, but isn't.
        </p>
      </dd><dt class="value">INVALID_EXECUTION_CONTEXT</dt><dd>
        
        <p>
          The context root used to create an execution context does not
          exist.
        </p>
      </dd><dt class="value">INVALID_FILE_PATH_FORMAT</dt><dd>
        
        <p>
          The format of the given file path is invalid, e.g. is not
          absolute and normalized.
        </p>
      </dd><dt class="value">INVALID_OVERLAY_CHANGE</dt><dd>
        
        <p>
          An "analysis.updateContent" request contained a
          ChangeContentOverlay object which can't be applied, due
          to an edit having an offset or length that is out of
          range.
        </p>
      </dd><dt class="value">INVALID_PARAMETER</dt><dd>
        
        <p>
          One of the method parameters was invalid.
        </p>
      </dd><dt class="value">INVALID_REQUEST</dt><dd>
        
        <p>
          A malformed request was received.
        </p>
      </dd><dt class="value">ORGANIZE_DIRECTIVES_ERROR</dt><dd>
        
        <p>
          An "edit.organizeDirectives" request specified a Dart file that
          cannot be analyzed. The reason is described in the message.
        </p>
      </dd><dt class="value">REFACTORING_REQUEST_CANCELLED</dt><dd>
        
        <p>
          Another refactoring request was received during processing of
          this one.
        </p>
      </dd><dt class="value">SERVER_ALREADY_STARTED</dt><dd>
        
        <p>
          The analysis server has already been started (and hence
          won't accept new connections).
        </p>
        <p>
          This error is included for future expansion; at present
          the analysis server can only speak to one client at a
          time so this error will never occur.
        </p>
      </dd><dt class="value">SERVER_ERROR</dt><dd>
        
        <p>
          An internal error occurred in the analysis server.
          Also see the server.error notification.
        </p>
      </dd><dt class="value">SORT_MEMBERS_INVALID_FILE</dt><dd>
        
        <p>
          An "edit.sortMembers" request specified a FilePath
          which does not match a Dart file in an analysis root.
        </p>
      </dd><dt class="value">SORT_MEMBERS_PARSE_ERRORS</dt><dd>
        
        <p>
          An "edit.sortMembers" request specified a Dart file that has
          scan or parse errors.
        </p>
      </dd><dt class="value">UNKNOWN_REQUEST</dt><dd>
        
        <p>
          A request was received which the analysis server does
          not recognize, or cannot handle in its current
          configuration.
        </p>
      </dd><dt class="value">UNSUPPORTED_FEATURE</dt><dd>
        
        <p>
          The analysis server was requested to perform an action
          which is not supported.
        </p>
        <p>
          This is a legacy error; it will be removed before the
          API reaches version 1.0.
        </p>
        
      </dd></dl></dd><dt class="typeDefinition"><a name="type_RuntimeCompletionExpression">RuntimeCompletionExpression: object</a></dt><dd>
    <p>
      An expression for which we want to know its runtime type.
      In expressions like 'a.b.c.where((e) =&gt; e.^)' we want to know the
      runtime type of 'a.b.c' to enforce it statically at the time when we
      compute completion suggestions, and get better type for 'e'.
    </p>
    
  <dl><dt class="field"><b>offset: int</b></dt><dd>
        
        <p>
          The offset of the expression in the code for completion.
        </p>
      </dd><dt class="field"><b>length: int</b></dt><dd>
        
        <p>
          The length of the expression in the code for completion.
        </p>
      </dd><dt class="field"><b>type: <a href="#type_RuntimeCompletionExpressionType">RuntimeCompletionExpressionType</a><span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          When the expression is sent from the server to the client, the
          type is omitted. The client should fill the type when it sends the
          request to the server again.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_RuntimeCompletionExpressionType">RuntimeCompletionExpressionType: object</a></dt><dd>
    <p>
      A type at runtime.
    </p>
    
  <dl><dt class="field"><b>libraryPath: <a href="#type_FilePath">FilePath</a><span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The path of the library that has this type.
          Omitted if the type is not declared in any library, e.g. "dynamic",
          or "void".
        </p>
      </dd><dt class="field"><b>kind: <a href="#type_RuntimeCompletionExpressionTypeKind">RuntimeCompletionExpressionTypeKind</a></b></dt><dd>
        
        <p>
          The kind of the type.
        </p>
      </dd><dt class="field"><b>name: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The name of the type. Omitted if the type does not have a name, e.g.
          an inline function type.
        </p>
      </dd><dt class="field"><b>typeArguments: List&lt;<a href="#type_RuntimeCompletionExpressionType">RuntimeCompletionExpressionType</a>&gt;<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The type arguments of the type.
          Omitted if the type does not have type parameters.
        </p>
      </dd><dt class="field"><b>returnType: <a href="#type_RuntimeCompletionExpressionType">RuntimeCompletionExpressionType</a><span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          If the type is a function type, the return type of the function.
          Omitted if the type is not a function type.
        </p>
      </dd><dt class="field"><b>parameterTypes: List&lt;<a href="#type_RuntimeCompletionExpressionType">RuntimeCompletionExpressionType</a>&gt;<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          If the type is a function type, the types of the function parameters
          of all kinds - required, optional positional, and optional named.
          Omitted if the type is not a function type.
        </p>
      </dd><dt class="field"><b>parameterNames: List&lt;String&gt;<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          If the type is a function type, the names of the function parameters
          of all kinds - required, optional positional, and optional named.
          The names of positional parameters are empty strings.
          Omitted if the type is not a function type.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_RuntimeCompletionExpressionTypeKind">RuntimeCompletionExpressionTypeKind: String</a></dt><dd>
    <p>
      An enumeration of the kinds of runtime expression types.
    </p>
    
  <dl><dt class="value">DYNAMIC</dt><dt class="value">FUNCTION</dt><dt class="value">INTERFACE</dt></dl></dd><dt class="typeDefinition"><a name="type_RuntimeCompletionVariable">RuntimeCompletionVariable: object</a></dt><dd>
    <p>
      A variable in a runtime context.
    </p>
    
  <dl><dt class="field"><b>name: String</b></dt><dd>
        
        <p>
          The name of the variable.
          The name "this" has a special meaning and is used as an implicit
          target for runtime completion, and in explicit "this" references.
        </p>
      </dd><dt class="field"><b>type: <a href="#type_RuntimeCompletionExpressionType">RuntimeCompletionExpressionType</a></b></dt><dd>
        
        <p>
          The type of the variable.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_SearchId">SearchId: String</a></dt><dd>
    
    <p>
      An identifier used to associate search results with a search
      request.
    </p>
  </dd><dt class="typeDefinition"><a name="type_SearchResult">SearchResult: object</a></dt><dd>
    <p>
      A single result from a search request.
    </p>
    
  <dl><dt class="field"><b>location: <a href="#type_Location">Location</a></b></dt><dd>
        
        <p>
          The location of the code that matched the search criteria.
        </p>
      </dd><dt class="field"><b>kind: <a href="#type_SearchResultKind">SearchResultKind</a></b></dt><dd>
        
        <p>
          The kind of element that was found or the kind of
          reference that was found.
        </p>
      </dd><dt class="field"><b>isPotential: bool</b></dt><dd>
        
        <p>
          True if the result is a potential match but cannot be
          confirmed to be a match. For example, if all references to
          a method m defined in some class were requested, and a
          reference to a method m from an unknown class were found,
          it would be marked as being a potential match.
        </p>
      </dd><dt class="field"><b>path: List&lt;<a href="#type_Element">Element</a>&gt;</b></dt><dd>
        
        <p>
          The elements that contain the result, starting with the
          most immediately enclosing ancestor and ending with the
          library.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_SearchResultKind">SearchResultKind: String</a></dt><dd>
    <p>
      An enumeration of the kinds of search results returned by the
      search domain.
    </p>
    
  <dl><dt class="value">DECLARATION</dt><dd>
        
        <p>
          The declaration of an element.
        </p>
      </dd><dt class="value">INVOCATION</dt><dd>
        
        <p>
          The invocation of a function or method.
        </p>
      </dd><dt class="value">READ</dt><dd>
        
        <p>
          A reference to a field, parameter or variable where it is being read.
        </p>
      </dd><dt class="value">READ_WRITE</dt><dd>
        
        <p>
          A reference to a field, parameter or variable where it is being read
          and written.
        </p>
      </dd><dt class="value">REFERENCE</dt><dd>
        
        <p>
          A reference to an element.
        </p>
      </dd><dt class="value">UNKNOWN</dt><dd>
        
        <p>
          Some other kind of search result.
        </p>
      </dd><dt class="value">WRITE</dt><dd>
        
        <p>
          A reference to a field, parameter or variable where it is being
          written.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_ServerService">ServerService: String</a></dt><dd>
    <p>
      An enumeration of the services provided by the server domain.
    </p>
    
  <dl><dt class="value">LOG</dt><dt class="value">STATUS</dt></dl></dd><dt class="typeDefinition"><a name="type_SourceChange">SourceChange: object</a></dt><dd>
    <p>
      A description of a set of edits that implement a single conceptual change.
    </p>
    
  <dl><dt class="field"><b>message: String</b></dt><dd>
        
        <p>
          A human-readable description of the change to be applied.
        </p>
        <p>
          If this change includes multiple edits made for different reasons (such as
          during a bulk fix operation), the individual items in <tt>edits</tt> may
          contain more specific descriptions.
        </p>
      </dd><dt class="field"><b>edits: List&lt;<a href="#type_SourceFileEdit">SourceFileEdit</a>&gt;</b></dt><dd>
        
        <p>
          A list of the edits used to effect the change, grouped by file.
        </p>
      </dd><dt class="field"><b>linkedEditGroups: List&lt;<a href="#type_LinkedEditGroup">LinkedEditGroup</a>&gt;</b></dt><dd>
        
        <p>
          A list of the linked editing groups used to customize the changes that
          were made.
        </p>
      </dd><dt class="field"><b>selection: <a href="#type_Position">Position</a><span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The position that should be selected after the edits have been
          applied.
        </p>
      </dd><dt class="field"><b>selectionLength: int<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The length of the selection (starting at Position) that should be selected after
          the edits have been applied.
        </p>
      </dd><dt class="field"><b>id: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The optional identifier of the change kind. The identifier remains
          stable even if the message changes, or is parameterized.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_SourceEdit">SourceEdit: object</a></dt><dd>
    <p>
      A description of a single change to a single file.
    </p>
    
  <dl><dt class="field"><b>offset: int</b></dt><dd>
        
        <p>
          The offset of the region to be modified.
        </p>
      </dd><dt class="field"><b>length: int</b></dt><dd>
        
        <p>
          The length of the region to be modified.
        </p>
      </dd><dt class="field"><b>replacement: String</b></dt><dd>
        
        <p>
          The code that is to replace the specified region in the original code.
        </p>
      </dd><dt class="field"><b>id: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          An identifier that uniquely identifies this source edit from other
          edits in the same response. This field is omitted unless a containing
          structure needs to be able to identify the edit for some reason.
        </p>
        <p>
          For example, some refactoring operations can produce edits that might
          not be appropriate (referred to as potential edits). Such edits will
          have an id so that they can be referenced. Edits in the same response
          that do not need to be referenced will not have an id.
        </p>
      </dd><dt class="field"><b>description: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          A human readable description of the change made by this edit.
        </p>
        <p>
          This description should be short and suitable to use as a heading
          with changes grouped by it. For example, a change made as part of
          a quick-fix may use the message "Replace final with var", allowing
          multiple changes and multiple applications of the fix to be grouped
          together.
        </p>
        <p>
          This value may be more specific than any value in an enclosing
          <tt>SourceChange.message</tt> which could contain edits made for
          different reasons (such as during a bulk fix operation).
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_SourceFileEdit">SourceFileEdit: object</a></dt><dd>
    <p>
      A description of a set of changes to a single file.
    </p>
    
  <dl><dt class="field"><b>file: <a href="#type_FilePath">FilePath</a></b></dt><dd>
        
        <p>
          The file containing the code to be modified.
        </p>
      </dd><dt class="field"><b><span class="deprecated">fileStamp</span>: long</b></dt><dd>
        
        <p>
          The modification stamp of the file at the moment when the change was
          created, in milliseconds since the "Unix epoch". Will be -1 if the
          file did not exist and should be created. The client may use this
          field to make sure that the file was not changed since then, so it is
          safe to apply the change.
        </p>
      </dd><dt class="field"><b>edits: List&lt;<a href="#type_SourceEdit">SourceEdit</a>&gt;</b></dt><dd>
        
        <p>
          A list of the edits used to effect the change.
        </p>
      </dd></dl></dd><dt class="typeDefinition"><a name="type_TypeHierarchyItem">TypeHierarchyItem: object</a></dt><dd>
    <p>
      A representation of a class in a type hierarchy.
    </p>
    
  <dl><dt class="field"><b>classElement: <a href="#type_Element">Element</a></b></dt><dd>
        
        <p>
          The class element represented by this item.
        </p>
      </dd><dt class="field"><b>displayName: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The name to be displayed for the class. This field will be
          omitted if the display name is the same as the name of the
          element. The display name is different if there is
          additional type information to be displayed, such as type
          arguments.
        </p>
      </dd><dt class="field"><b>memberElement: <a href="#type_Element">Element</a><span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The member in the class corresponding to the member on
          which the hierarchy was requested. This field will be
          omitted if the hierarchy was not requested for a member or
          if the class does not have a corresponding member.
        </p>
      </dd><dt class="field"><b>superclass: int<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The index of the item representing the superclass of
          this class. This field will be omitted if this item
          represents the class Object.
        </p>
      </dd><dt class="field"><b>interfaces: List&lt;int&gt;</b></dt><dd>
        
        <p>
          The indexes of the items representing the interfaces
          implemented by this class. The list will be empty if
          there are no implemented interfaces.
        </p>
      </dd><dt class="field"><b>mixins: List&lt;int&gt;</b></dt><dd>
        
        <p>
          The indexes of the items representing the mixins
          referenced by this class. The list will be empty if
          there are no classes mixed into this class.
        </p>
      </dd><dt class="field"><b>subclasses: List&lt;int&gt;</b></dt><dd>
        
        <p>
          The indexes of the items representing the subtypes of
          this class. The list will be empty if there are no
          subtypes or if this item represents a supertype of the
          pivot type.
        </p>
      </dd></dl></dd></dl>

  <h2><a name="refactorings">Refactorings</a></h2>
  <p>
    This section contains additional information for each kind of
    refactoring. In addition to a brief description of the
    refactoring, there is a specification of the feedback that is
    provided when a refactoring is requested using the
    edit.getRefactoring request (designed to improve the UX)
    and the options that may be provided to edit.getRefactoring.
  </p>
  
  
  
  
  
  
  
  
  
<dl><dt class="refactoring">CONVERT_GETTER_TO_METHOD</dt><dd>
    <p>
      Convert a getter into a method by removing the keyword get
      and adding an empty parameter list.
    </p>
    <p>
      It is an error if the range contains anything other than all
      or part of the name of a single getter.
    </p>
  <h4>Feedback:</h4><p>none</p><h4>Options:</h4><p>none</p></dd><dt class="refactoring">CONVERT_METHOD_TO_GETTER</dt><dd>
    <p>
      Convert a method into a getter by adding the keyword get and
      removing the parameter list.
    </p>
    <p>
      It is an error if the range contains anything other than all
      or part of the name of a single method or if the method has
      a non-empty parameter list.
    </p>
  <h4>Feedback:</h4><p>none</p><h4>Options:</h4><p>none</p></dd><dt class="refactoring">EXTRACT_LOCAL_VARIABLE</dt><dd>
    <p>
      Create a local variable initialized by the expression that covers
      the specified selection.
    </p>
    <p>
      It is an error if the selection range is not covered by a
      complete expression.
    </p>
    
    
  <h4>Feedback:</h4><dl><dt class="field"><b>coveringExpressionOffsets: List&lt;int&gt;<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The offsets of the expressions that cover the specified
          selection, from the down most to the up most.
        </p>
      </dd><dt class="field"><b>coveringExpressionLengths: List&lt;int&gt;<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The lengths of the expressions that cover the specified
          selection, from the down most to the up most.
        </p>
      </dd><dt class="field"><b>names: List&lt;String&gt;</b></dt><dd>
        
        <p>
          The proposed names for the local variable.
        </p>
      </dd><dt class="field"><b>offsets: List&lt;int&gt;</b></dt><dd>
        
        <p>
          The offsets of the expressions that would be replaced by
          a reference to the variable.
        </p>
      </dd><dt class="field"><b>lengths: List&lt;int&gt;</b></dt><dd>
        
        <p>
          The lengths of the expressions that would be replaced by
          a reference to the variable. The lengths correspond to
          the offsets. In other words, for a given expression, if
          the offset of that expression is <tt>offsets[i]</tt>, then
          the length of that expression is <tt>lengths[i]</tt>.
        </p>
      </dd></dl><h4>Options:</h4><dl><dt class="field"><b>name: String</b></dt><dd>
        
        <p>
          The name that the local variable should be given.
        </p>
      </dd><dt class="field"><b>extractAll: bool</b></dt><dd>
        
        <p>
          True if all occurrences of the expression within the
          scope in which the variable will be defined should be
          replaced by a reference to the local variable. The
          expression used to initiate the refactoring will always
          be replaced.
        </p>
      </dd></dl></dd><dt class="refactoring">EXTRACT_METHOD</dt><dd>
    <p>
      Create a method whose body is the specified expression or
      list of statements, possibly augmented with a return
      statement.
    </p>
    <p>
      It is an error if the range contains anything other than a
      complete expression (no partial expressions are allowed) or
      a complete sequence of statements.
    </p>
    
    
  <h4>Feedback:</h4><dl><dt class="field"><b>offset: int</b></dt><dd>
        
        <p>
          The offset to the beginning of the expression or
          statements that will be extracted.
        </p>
      </dd><dt class="field"><b>length: int</b></dt><dd>
        
        <p>
          The length of the expression or statements that will be
          extracted.
        </p>
      </dd><dt class="field"><b>returnType: String</b></dt><dd>
        
        <p>
          The proposed return type for the method.
          If the returned element does not have a declared return type,
          this field will contain an empty string.
        </p>
      </dd><dt class="field"><b>names: List&lt;String&gt;</b></dt><dd>
        
        <p>
          The proposed names for the method.
        </p>
      </dd><dt class="field"><b>canCreateGetter: bool</b></dt><dd>
        
        <p>
          True if a getter could be created rather than a method.
        </p>
      </dd><dt class="field"><b>parameters: List&lt;<a href="#type_RefactoringMethodParameter">RefactoringMethodParameter</a>&gt;</b></dt><dd>
        
        <p>
          The proposed parameters for the method.
        </p>
      </dd><dt class="field"><b>offsets: List&lt;int&gt;</b></dt><dd>
        
        <p>
          The offsets of the expressions or statements that would
          be replaced by an invocation of the method.
        </p>
      </dd><dt class="field"><b>lengths: List&lt;int&gt;</b></dt><dd>
        
        <p>
          The lengths of the expressions or statements that would
          be replaced by an invocation of the method. The lengths
          correspond to the offsets. In other words, for a given
          expression (or block of statements), if the offset of
          that expression is <tt>offsets[i]</tt>, then the length
          of that expression is <tt>lengths[i]</tt>.
        </p>
      </dd></dl><h4>Options:</h4><dl><dt class="field"><b>returnType: String</b></dt><dd>
        
        <p>
          The return type that should be defined for the method.
        </p>
      </dd><dt class="field"><b>createGetter: bool</b></dt><dd>
        
        <p>
          True if a getter should be created rather than a
          method. It is an error if this field is true and the
          list of parameters is non-empty.
        </p>
      </dd><dt class="field"><b>name: String</b></dt><dd>
        
        <p>
          The name that the method should be given.
        </p>
      </dd><dt class="field"><b>parameters: List&lt;<a href="#type_RefactoringMethodParameter">RefactoringMethodParameter</a>&gt;</b></dt><dd>
        
        <p>
          The parameters that should be defined for the method.
        </p>
        <p>
          It is an error if a REQUIRED or NAMED parameter follows a
          POSITIONAL parameter.
          It is an error if a REQUIRED or POSITIONAL parameter follows a
          NAMED parameter.
        </p>
        <ul>
          <li>
            To change the order and/or update proposed parameters, add
            parameters with the same identifiers as proposed.
          </li>
          <li>To add new parameters, omit their identifier.</li>
          <li>To remove some parameters, omit them in this list.</li>
        </ul>
      </dd><dt class="field"><b>extractAll: bool</b></dt><dd>
        
        <p>
          True if all occurrences of the expression or statements
          should be replaced by an invocation of the method. The
          expression or statements used to initiate the
          refactoring will always be replaced.
        </p>
      </dd></dl></dd><dt class="refactoring">EXTRACT_WIDGET</dt><dd>
    <p>
      Create a new class that extends StatelessWidget, whose build() method is
      the widget creation expression, or a method returning a Flutter widget,
      at the specified offset.
    </p>
    
    
  <h4>Feedback:</h4><dl></dl><h4>Options:</h4><dl><dt class="field"><b>name: String</b></dt><dd>
        
        <p>
          The name that the widget class should be given.
        </p>
      </dd></dl></dd><dt class="refactoring">INLINE_LOCAL_VARIABLE</dt><dd>
    <p>
      Inline the initializer expression of a local variable in
      place of any references to that variable.
    </p>
    <p>
      It is an error if the range contains anything other than all
      or part of the name of a single local variable.
    </p>
    
  <h4>Feedback:</h4><dl><dt class="field"><b>name: String</b></dt><dd>
        
        <p>
          The name of the variable being inlined.
        </p>
      </dd><dt class="field"><b>occurrences: int</b></dt><dd>
        
        <p>
          The number of times the variable occurs.
        </p>
      </dd></dl><h4>Options:</h4><p>none</p></dd><dt class="refactoring">INLINE_METHOD</dt><dd>
    <p>
      Inline a method in place of one or all references to that
      method.
    </p>
    <p>
      It is an error if the range contains anything other than all
      or part of the name of a single method.
    </p>
    
    
  <h4>Feedback:</h4><dl><dt class="field"><b>className: String<span style="color:#999999"> (optional)</span></b></dt><dd>
        
        <p>
          The name of the class enclosing the method being inlined.
          If not a class member is being inlined, this field will be absent.
        </p>
      </dd><dt class="field"><b>methodName: String</b></dt><dd>
        
        <p>
          The name of the method (or function) being inlined.
        </p>
      </dd><dt class="field"><b>isDeclaration: bool</b></dt><dd>
        
        <p>
          True if the declaration of the method is selected.
          So all references should be inlined.
        </p>
      </dd></dl><h4>Options:</h4><dl><dt class="field"><b>deleteSource: bool</b></dt><dd>
        
        <p>
          True if the method being inlined should be removed.
          It is an error if this field is true and inlineAll is false.
        </p>
      </dd><dt class="field"><b>inlineAll: bool</b></dt><dd>
        
        <p>
          True if all invocations of the method should be inlined,
          or false if only the invocation site used to create this
          refactoring should be inlined.
        </p>
      </dd></dl></dd><dt class="refactoring">MOVE_FILE</dt><dd>
    <p>
      Move the given file or folder and update all of the references to
      and from it. The move operation is supported in general case -
      for renaming an item in the same folder, moving it to a different
      folder or both.

      Moving or renaming large folders may take time and clients should
      consider showing an indicator to the user with the ability to
      cancel the request (which can be done using
      <tt>server.cancelRequest</tt>).
    </p>
    <p>
      The refactoring must be activated before an actual file moving
      operation is performed.
    </p>
    <p>
      The "offset" and "length" fields from the request are ignored, but the
      file specified in the request specifies the file to be moved.
    </p>
    
  <h4>Feedback:</h4><p>none</p><h4>Options:</h4><dl><dt class="field"><b>newFile: <a href="#type_FilePath">FilePath</a></b></dt><dd>
        
        <p>
          The new file path to which the given file is being moved.
        </p>
      </dd></dl></dd><dt class="refactoring">RENAME</dt><dd>
    <p>
      Rename a given element and all of the references to that
      element.
    </p>
    <p>
      It is an error if the range contains anything other than all
      or part of the name of a single function (including methods,
      getters and setters), variable (including fields, parameters
      and local variables), class or function type.
    </p>
    
    
  <h4>Feedback:</h4><dl><dt class="field"><b>offset: int</b></dt><dd>
        
        <p>
          The offset to the beginning of the name selected to be
          renamed, or -1 if the name does not exist yet.
        </p>
      </dd><dt class="field"><b>length: int</b></dt><dd>
        
        <p>
          The length of the name selected to be renamed.
        </p>
      </dd><dt class="field"><b>elementKindName: String</b></dt><dd>
        
        <p>
          The human-readable description of the kind of element being
          renamed (such as "class" or "function type
          alias").
        </p>
      </dd><dt class="field"><b>oldName: String</b></dt><dd>
        
        <p>
          The old name of the element before the refactoring.
        </p>
      </dd></dl><h4>Options:</h4><dl><dt class="field"><b>newName: String</b></dt><dd>
        
        <p>
          The name that the element should have after the
          refactoring.
        </p>
      </dd></dl></dd></dl>
<h2>Errors</h2>
<p>
  This section contains a list of all of the errors that are
  produced by the server and the data that is returned with each.
</p>
<p>
  TODO: TBD
</p>
<h2 class="domain"><a name="index">Index</a></h2>
<h3>Domains</h3><h4>server (<a href="#domain_server">↑</a>)</h4><div class="subindex"><h5>Requests</h5><ul><li><a href="#request_server.getVersion">getVersion</a></li><li><a href="#request_server.shutdown">shutdown</a></li><li><a href="#request_server.setSubscriptions">setSubscriptions</a></li><li><a href="#request_server.cancelRequest">cancelRequest</a></li><li><a href="#request_server.setClientCapabilities">setClientCapabilities</a></li><li><a href="#request_server.openUrlRequest">openUrlRequest</a></li><li><a href="#request_server.showMessageRequest">showMessageRequest</a></li></ul><h5>Notifications</h5><div class="subindex"><ul><li><a href="#notification_server.connected">connected</a></li><li><a href="#notification_server.error">error</a></li><li><a href="#notification_server.pluginError">pluginError</a></li><li><a href="#notification_server.log">log</a></li><li><a href="#notification_server.status">status</a></li></ul></div></div><h4>analysis (<a href="#domain_analysis">↑</a>)</h4><div class="subindex"><h5>Requests</h5><ul><li><a href="#request_analysis.getErrors">getErrors</a></li><li><a href="#request_analysis.getHover">getHover</a></li><li><a href="#request_analysis.getLibraryDependencies">getLibraryDependencies</a></li><li><a href="#request_analysis.getNavigation">getNavigation</a></li><li><a href="#request_analysis.getReachableSources">getReachableSources</a></li><li><a href="#request_analysis.reanalyze">reanalyze</a></li><li><a href="#request_analysis.setAnalysisRoots">setAnalysisRoots</a></li><li><a href="#request_analysis.setGeneralSubscriptions">setGeneralSubscriptions</a></li><li><a href="#request_analysis.setPriorityFiles">setPriorityFiles</a></li><li><a href="#request_analysis.setSubscriptions">setSubscriptions</a></li><li><a href="#request_analysis.updateContent">updateContent</a></li><li><a href="#request_analysis.updateOptions">updateOptions</a></li></ul><h5>Notifications</h5><div class="subindex"><ul><li><a href="#notification_analysis.analyzedFiles">analyzedFiles</a></li><li><a href="#notification_analysis.closingLabels">closingLabels</a></li><li><a href="#notification_analysis.errors">errors</a></li><li><a href="#notification_analysis.flushResults">flushResults</a></li><li><a href="#notification_analysis.folding">folding</a></li><li><a href="#notification_analysis.highlights">highlights</a></li><li><a href="#notification_analysis.implemented">implemented</a></li><li><a href="#notification_analysis.invalidate">invalidate</a></li><li><a href="#notification_analysis.navigation">navigation</a></li><li><a href="#notification_analysis.occurrences">occurrences</a></li><li><a href="#notification_analysis.outline">outline</a></li><li><a href="#notification_analysis.overrides">overrides</a></li></ul></div></div><h4>completion (<a href="#domain_completion">↑</a>)</h4><div class="subindex"><h5>Requests</h5><ul><li><a href="#request_completion.getSuggestions2">getSuggestions2</a></li><li><a href="#request_completion.registerLibraryPaths">registerLibraryPaths</a></li><li><a href="#request_completion.getSuggestionDetails2">getSuggestionDetails2</a></li></ul><h5>Notifications</h5><div class="subindex"><ul><li><a href="#notification_completion.existingImports">existingImports</a></li></ul></div></div><h4>search (<a href="#domain_search">↑</a>)</h4><div class="subindex"><h5>Requests</h5><ul><li><a href="#request_search.findElementReferences">findElementReferences</a></li><li><a href="#request_search.findMemberDeclarations">findMemberDeclarations</a></li><li><a href="#request_search.findMemberReferences">findMemberReferences</a></li><li><a href="#request_search.findTopLevelDeclarations">findTopLevelDeclarations</a></li><li><a href="#request_search.getTypeHierarchy">getTypeHierarchy</a></li></ul><h5>Notifications</h5><div class="subindex"><ul><li><a href="#notification_search.results">results</a></li></ul></div></div><h4>edit (<a href="#domain_edit">↑</a>)</h4><div class="subindex"><h5>Requests</h5><ul><li><a href="#request_edit.format">format</a></li><li><a href="#request_edit.getAssists">getAssists</a></li><li><a href="#request_edit.getAvailableRefactorings">getAvailableRefactorings</a></li><li><a href="#request_edit.getFixes">getFixes</a></li><li><a href="#request_edit.getPostfixCompletion">getPostfixCompletion</a></li><li><a href="#request_edit.getRefactoring">getRefactoring</a></li><li><a href="#request_edit.sortMembers">sortMembers</a></li><li><a href="#request_edit.organizeDirectives">organizeDirectives</a></li></ul></div><h4>execution (<a href="#domain_execution">↑</a>)</h4><div class="subindex"><h5>Requests</h5><ul><li><a href="#request_execution.createContext">createContext</a></li><li><a href="#request_execution.deleteContext">deleteContext</a></li><li><a href="#request_execution.getSuggestions">getSuggestions</a></li><li><a href="#request_execution.mapUri">mapUri</a></li><li><a href="#request_execution.setSubscriptions">setSubscriptions</a></li></ul><h5>Notifications</h5><div class="subindex"><ul><li><a href="#notification_execution.launchData">launchData</a></li></ul></div></div><h4>diagnostic (<a href="#domain_diagnostic">↑</a>)</h4><div class="subindex"><h5>Requests</h5><ul><li><a href="#request_diagnostic.getDiagnostics">getDiagnostics</a></li><li><a href="#request_diagnostic.getServerPort">getServerPort</a></li></ul></div><h4>flutter (<a href="#domain_flutter">↑</a>)</h4><div class="subindex"><h5>Requests</h5><ul><li><a href="#request_flutter.setSubscriptions">setSubscriptions</a></li></ul><h5>Notifications</h5><div class="subindex"><ul><li><a href="#notification_flutter.outline">outline</a></li></ul></div></div><h3>Types (<a href="#types">↑</a>)</h3><div class="subindex"><ul><li><a href="#type_AddContentOverlay">AddContentOverlay</a></li><li><a href="#type_AnalysisError">AnalysisError</a></li><li><a href="#type_AnalysisErrorFixes">AnalysisErrorFixes</a></li><li><a href="#type_AnalysisErrorSeverity">AnalysisErrorSeverity</a></li><li><a href="#type_AnalysisErrorType">AnalysisErrorType</a></li><li><a href="#type_AnalysisOptions">AnalysisOptions</a></li><li><a href="#type_AnalysisService">AnalysisService</a></li><li><a href="#type_AnalysisStatus">AnalysisStatus</a></li><li><a href="#type_BulkFix">BulkFix</a></li><li><a href="#type_BulkFixDetail">BulkFixDetail</a></li><li><a href="#type_ChangeContentOverlay">ChangeContentOverlay</a></li><li><a href="#type_ClosingLabel">ClosingLabel</a></li><li><a href="#type_CompletionCaseMatchingMode">CompletionCaseMatchingMode</a></li><li><a href="#type_CompletionMode">CompletionMode</a></li><li><a href="#type_CompletionSuggestion">CompletionSuggestion</a></li><li><a href="#type_CompletionSuggestionKind">CompletionSuggestionKind</a></li><li><a href="#type_ContextData">ContextData</a></li><li><a href="#type_DiagnosticMessage">DiagnosticMessage</a></li><li><a href="#type_Element">Element</a></li><li><a href="#type_ElementDeclaration">ElementDeclaration</a></li><li><a href="#type_ElementKind">ElementKind</a></li><li><a href="#type_ExecutableFile">ExecutableFile</a></li><li><a href="#type_ExecutableKind">ExecutableKind</a></li><li><a href="#type_ExecutionContextId">ExecutionContextId</a></li><li><a href="#type_ExecutionService">ExecutionService</a></li><li><a href="#type_ExistingImport">ExistingImport</a></li><li><a href="#type_ExistingImports">ExistingImports</a></li><li><a href="#type_FileKind">FileKind</a></li><li><a href="#type_FilePath">FilePath</a></li><li><a href="#type_FlutterOutline">FlutterOutline</a></li><li><a href="#type_FlutterOutlineAttribute">FlutterOutlineAttribute</a></li><li><a href="#type_FlutterOutlineKind">FlutterOutlineKind</a></li><li><a href="#type_FlutterService">FlutterService</a></li><li><a href="#type_FlutterWidgetProperty">FlutterWidgetProperty</a></li><li><a href="#type_FlutterWidgetPropertyEditor">FlutterWidgetPropertyEditor</a></li><li><a href="#type_FlutterWidgetPropertyEditorKind">FlutterWidgetPropertyEditorKind</a></li><li><a href="#type_FlutterWidgetPropertyValue">FlutterWidgetPropertyValue</a></li><li><a href="#type_FlutterWidgetPropertyValueEnumItem">FlutterWidgetPropertyValueEnumItem</a></li><li><a href="#type_FoldingKind">FoldingKind</a></li><li><a href="#type_FoldingRegion">FoldingRegion</a></li><li><a href="#type_GeneralAnalysisService">GeneralAnalysisService</a></li><li><a href="#type_HighlightRegion">HighlightRegion</a></li><li><a href="#type_HighlightRegionType">HighlightRegionType</a></li><li><a href="#type_HoverInformation">HoverInformation</a></li><li><a href="#type_ImplementedClass">ImplementedClass</a></li><li><a href="#type_ImplementedMember">ImplementedMember</a></li><li><a href="#type_ImportedElementSet">ImportedElementSet</a></li><li><a href="#type_ImportedElements">ImportedElements</a></li><li><a href="#type_LibraryPathSet">LibraryPathSet</a></li><li><a href="#type_LinkedEditGroup">LinkedEditGroup</a></li><li><a href="#type_LinkedEditSuggestion">LinkedEditSuggestion</a></li><li><a href="#type_LinkedEditSuggestionKind">LinkedEditSuggestionKind</a></li><li><a href="#type_Location">Location</a></li><li><a href="#type_MessageAction">MessageAction</a></li><li><a href="#type_MessageType">MessageType</a></li><li><a href="#type_NavigationRegion">NavigationRegion</a></li><li><a href="#type_NavigationTarget">NavigationTarget</a></li><li><a href="#type_Occurrences">Occurrences</a></li><li><a href="#type_Outline">Outline</a></li><li><a href="#type_OverriddenMember">OverriddenMember</a></li><li><a href="#type_Override">Override</a></li><li><a href="#type_Position">Position</a></li><li><a href="#type_PostfixTemplateDescriptor">PostfixTemplateDescriptor</a></li><li><a href="#type_PubStatus">PubStatus</a></li><li><a href="#type_RefactoringFeedback">RefactoringFeedback</a></li><li><a href="#type_RefactoringKind">RefactoringKind</a></li><li><a href="#type_RefactoringMethodParameter">RefactoringMethodParameter</a></li><li><a href="#type_RefactoringMethodParameterKind">RefactoringMethodParameterKind</a></li><li><a href="#type_RefactoringOptions">RefactoringOptions</a></li><li><a href="#type_RefactoringProblem">RefactoringProblem</a></li><li><a href="#type_RefactoringProblemSeverity">RefactoringProblemSeverity</a></li><li><a href="#type_RemoveContentOverlay">RemoveContentOverlay</a></li><li><a href="#type_RequestError">RequestError</a></li><li><a href="#type_RequestErrorCode">RequestErrorCode</a></li><li><a href="#type_RuntimeCompletionExpression">RuntimeCompletionExpression</a></li><li><a href="#type_RuntimeCompletionExpressionType">RuntimeCompletionExpressionType</a></li><li><a href="#type_RuntimeCompletionExpressionTypeKind">RuntimeCompletionExpressionTypeKind</a></li><li><a href="#type_RuntimeCompletionVariable">RuntimeCompletionVariable</a></li><li><a href="#type_SearchId">SearchId</a></li><li><a href="#type_SearchResult">SearchResult</a></li><li><a href="#type_SearchResultKind">SearchResultKind</a></li><li><a href="#type_ServerService">ServerService</a></li><li><a href="#type_SourceChange">SourceChange</a></li><li><a href="#type_SourceEdit">SourceEdit</a></li><li><a href="#type_SourceFileEdit">SourceFileEdit</a></li><li><a href="#type_TypeHierarchyItem">TypeHierarchyItem</a></li></ul></div><h3>Refactorings (<a href="#refactorings">↑</a>)</h3><div class="subindex"><ul><li><a href="#refactoring_CONVERT_GETTER_TO_METHOD">CONVERT_GETTER_TO_METHOD</a></li><li><a href="#refactoring_CONVERT_METHOD_TO_GETTER">CONVERT_METHOD_TO_GETTER</a></li><li><a href="#refactoring_EXTRACT_LOCAL_VARIABLE">EXTRACT_LOCAL_VARIABLE</a></li><li><a href="#refactoring_EXTRACT_METHOD">EXTRACT_METHOD</a></li><li><a href="#refactoring_EXTRACT_WIDGET">EXTRACT_WIDGET</a></li><li><a href="#refactoring_INLINE_LOCAL_VARIABLE">INLINE_LOCAL_VARIABLE</a></li><li><a href="#refactoring_INLINE_METHOD">INLINE_METHOD</a></li><li><a href="#refactoring_MOVE_FILE">MOVE_FILE</a></li><li><a href="#refactoring_RENAME">RENAME</a></li></ul></div>
</body>
</html>
